HJ2 计算某字符出现次数
https://www.nowcoder.com/share/jump/7064737441730898928864
描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
数据范围: 1≤n≤1000
输入描述:
第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例1
输入:
ABCabc
A
输出:
2
题解
str1=input().lower()
obstr=input().lower()
print(str1.count(obstr))
Python 将字符串大写字母转换为小写字母:s.lower()
,s为字符串
Python 统计字符串某个字符串个数:s.count(n)
,s为字符串,n为需要统计的字符
HJ4 字符串分隔
https://www.nowcoder.com/share/jump/7064737441730901150519
描述
输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
示例1
输入:
abc
输出:
abc00000
题解
n=input()
while len(n)>8:
print(n[:8])
n=n[8:]
print(n+"0"*(8-len(n)))
HJ14 字符串排序
https://www.nowcoder.com/share/jump/7064737441729320977189
描述
给定 n 个字符串,请对 n 个字符串按照字典序排列。
数据范围: 1≤n≤1000,字符串长度满足1≤len≤100
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
示例1
输入: 输出:
9 boat
cap boot
to cap
cat card
card cat
two to
too too
up two
boat up
boot
题解:
N=int(input())
lists=[]
for i in range(0,N):
lists.append(input())
'''输出方法一'''
# for i in sorted(list):
# print(i)
'''输出方法二'''
print('\n'.join(sorted(lists)))
字符串按照字典序排序相关使用方法
字典序排序通过两种不同的函数来实现:sort和sorted。
sort函数对列表进行原地排序,直接修改原有的列表;sorted函数对列表原始数据保持不变,排序结果会作为一个新列表。实例如下:
对列表按照字典序排序
s2=['cap', 'to', 'cat', 'card', 'two', 'too', 'up', 'boat', 'boot']
print(sorted(s2))
print(s2)
s2.sort()
print(s2)
输出结果:
sorted(s2)
不改变列表原有的排序,s2.sort()
改变列表原有的排序
['boat', 'boot', 'cap', 'card', 'cat', 'to', 'too', 'two', 'up']
['cap', 'to', 'cat', 'card', 'two', 'too', 'up', 'boat', 'boot']
['boat', 'boot', 'cap', 'card', 'cat', 'to', 'too', 'two', 'up']
对字符串按照字典序排序
s="hello world"
print(''.join(sorted(s))
输出结果为: dehllloorw
其中,sorted(s)
返回一个按照字典序排列的字符列表,''.join()
将字符列表转为字符串
HJ15 求int型正整数在内存中存储时1的个数
https://www.nowcoder.com/share/jump/7064737441729324859324
描述
输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
数据范围:保证在 32 位整型数字范围内
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
题解
n=int(input())
ns=bin(n)[2:]
print(ns.count('1'))
Python 整型int转换成二进制函数:bin()
Python 字符转Ascii码函数:ord(s)
,Ascii转换字符函数:chr(s)
Python 计算字符串中出现字符的个数:count(),str.count(sub, start= 0,end=len(string))
HJ23 删除字符串中出现次数最少的字符
https://www.nowcoder.com/share/jump/7064737441729406986240
描述
实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
数据范围:输入的字符串长度满足1≤n≤20 ,保证输入的字符串中仅出现小写字母
输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
示例1
输入:aabcddd
输出:aaddd
题解
n=input()
ln={}
for i in n:
if i in ln.keys():
ln[i]=ln[i]+1
else:
ln[i]=1
min_value=min(ln.values())
min_key=[k for k,v in ln.items() if v == min_value]
for i in min_key:
n=n.replace(i,'')
print(n)
相关知识
Python 查找字典中值的最小值:min_value=min(ln.values())
Python 查找字典中值的最小值所对应的键:min_key=[k for k,v in ln.items() if v == min_value]
Python 删除字符串中某个字符串的值:new_s=s.replace(删除的值,'')
,注意字符串是不可变的,s.replace
不改变原来s的值,将删除后的值赋给了new_s。
HJ33 整数与IP地址间的转换
https://www.nowcoder.com/share/jump/7064737441730020682939
描述
原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数。
举例:一个ip地址为10.0.3.193
每段数字 相对应的二进制数
10 00001010
0 00000000
3 00000011
193 11000001
组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。
数据范围:保证输入的是合法的 IP 序列
输入描述:
1 输入IP地址
2 输入10进制型的IP地址
输出描述:
1 输出转换成10进制的IP地址
2 输出转换后的IP地址
示例1
输入
10.0.3.193
167969729
输出
167773121
10.3.3.193
题解
from math import ceil
str_ip = input().split(".")
int_ip = bin(int(input()))[2::] # 十进制转为二进制
bu_len=ceil(len(int_ip)/8)*8
int_ip=int_ip.rjust(bu_len,'0') # 十进制转为二进制,高位补0
str_ip2 = ""
int_ip2 = []
for i in str_ip:
str_ip2 += "{:08b}".format(int(i)) # 十进制转为8位二进制,高位补0
for i in range(0, len(int_ip), 8):
x = int(int_ip[i : i + 8], 2) #划分8位二进制并将其转为十进制
int_ip2.append(str(x))
print(int(str_ip2, 2)) # 二进制转十进制
print(".".join(int_ip2))
输入IP转为十进制思路:
step1. 分割ip:输入ip为字符串,用ip.split(".")
得str_ip=[‘10’,‘0’,‘3’,‘193’]
step2. 分段将十进制转换为8位二进制,高位补0,并拼接成字符串str_ip2:for i in str_ip: str_ip2 += "{:08b}".format(int(i))
step3. 二进制字符str_ip2串转成十进制:int(str_ip2, 2)
输入十进制转为IP思路:
step1. 十进制转为二进制:bin(nums)
,nums为int型,得到0b开头的二进制,提取由0和1组成的二进制字符串int_ip=bin(nums)[2::]
step2.将二进制字符串高位补0,使其长度为8的倍数:int_ip=int_ip.rjust(bu_len,'0')
,bu_len为高位补0后应有的长度
step3. 分割以8为长度的二进制,并将其转为十进制:for i in range(0, len(int_ip), 8): int_ip2.append(str(int(int_ip[i : i + 8], 2)))
step4. 拼接分段的十进制:".".join(int_ip2)
相关知识
Python 二进制转为十进制:int(binary,2)
,binary为二进制字符串
Python 十进制转为二进制:方法① bin(nums)
;方法②"{:8b}".format(nums)
,nums为int整型
Python 十进制转为8位二进制,且高位补0:"{:08b}".format(nums)
Python 十进制转为超8位二进制,且高位补0:str.rjust(len,sub)
Python 每隔n个字符串拆分字符串:使用切片和循环来拆分字符串,示例如下
s="HelloWorld"
n3
for i in range(0, len(s), n):
res.append(s[i:i+n])
print(res) # 输出 ['Hel', 'loW', 'orl', 'd']