目录
一、字符串(知识点)
HJ1 字符串最后一个单词的长度(简单)
HJ2 计算某字符出现次数(简单)
HJ4 字符串分隔(简单)
HJ5 进制转换(简单)
HJ10 字符个数统计(简单)
HJ11 数字颠倒(简单)
HJ12 字符串反转(简单)
HJ14 字符串排序(简单)
HJ17 坐标移动(中等)
HJ18 识别有效的IP地址和掩码并进行分类统计(较难)
自己研究的题解,也有借鉴评论区牛人思路,答案不唯一,仅供学习参考,也欢迎大家指出问题,共同学习
描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。
示例1
输入:hello nowcoder
输出:8
说明:最后一个单词为nowcoder,长度为8
import sys
a = input().split()
print(len(a[-1]))
分析:利用split将字符串按空格拆分成一个列表,再利用len和[-1]取最后一个字符串的长度。
描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
数据范围:1≤n≤1000
输入描述:
第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为格)。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例1
输入:ABCabc
A
输出:2
import sys
st1 = input().lower()
st2 = input().lower()
print(st1.count(st2))
分析:将两次输入都小写化(lower),以至于不用区分大小写,再利用st1.count(st2),意为st2在st1中的个数。
描述
输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
示例1
输入:abc
输出:abc00000
import sys
# :0<8s 格式左对齐 右补0 输出8个字符串
while True:
try:
l = input()
for i in range(0, len(l), 8): #间隔8
print("{:0<8s}".format(l[i:i+8]))
except:
break
分析:主要利用一个循环,遍历每8个字符的开头,为了输出0-8,8-16……,补0利用初始化函数format,:0<8s意为左对齐 右补0, 输出8个字符。(利用while和try的意图在于可以循环输入,直到输入一个非十六进制数,退出并且不会报错)
描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在 1≤n≤2**31−1
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1
输入:0xAA
输出:170
import sys
while True:
try:
a = input()
print(int(a,16))
except:
break
分析:利用int()将其他进制转换为十进制--->int(a,16)十六进制转换为十进制,int(a,8)八进制转换为十进制,int(a,2)二进制转换为十进制。bin(a)将其他进制转换为二进制。
描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
<