一、机试练习篇
1、简单题
HJ1 字符串最后一个单词的长度
描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。
示例1:
输入:
hello nowcoder输出:
8说明:
最后一个单词为nowcoder,长度为8
实现代码:
s = input()
s_list = s.split(' ')
print(len(s_list[-1]))
HJ2 计算某字符出现次数
描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
数据范围: 1≤�≤1000 1≤n≤1000
输入描述:
第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例1
输入:
ABCabc
A输出:
2
实现代码:
s1 = input()
s2 = input()
count = 0
for i in s1:if(s2.upper() == i.upper()):count += 1
print(count)
HJ4 字符串分隔
描述
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
示例1:
输入:
abc输出:
abc00000
实现代码:
s = input()
while len(s) > 8:print(s[:8]) # 循环迭代每次取前8位字符s = s[8:] #将剩余的字符串取下备下次用
if len(s) != 0:for i in range(8 - len(s)): # 最后不足8位用0补齐s += "0"
print(s)
HJ5 进制转换
描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在 1≤�≤231−1 1≤n≤231−1
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1
输入:
0xAA输出:
170
实现代码:
num = input()
print(int(num, 16)) # int()函数可以将任何进制的数据转换为十进制数据
# print(bin(int(num, 16))) # bin()函数可以将十进制数据转换为二进制数据
HJ6 质数因子
描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
数据范围: 1≤�≤2×109+14 1≤n≤2×109+14
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
示例1
输入:
180输出:
2 2 3 3 5
实现代码:
from math import sqrt
num = int(input())for i in range(2, int(sqrt(num)) + 1):# if(num % i == 0):while(num % i == 0):num /= iprint(i, end=' ')#不换行输出
if(num != 1):print(int(num))
HJ7 取近似值
描述
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。
数据范围:保证输入的数字在 32 位浮点数范围内
输入描述:
输入一个正浮点数值
输出描述:
输出该数值的近似整数值
示例1
输入:
5.5输出:
6说明:
0.5>=0.5,所以5.5需要向上取整为6
示例2
输入:
2.499输出:
2说明:
0.499<0.5,2.499向下取整为2
实现代码:
num = float(input())
small = num - int(num)
if(small >= 0.5):print(int(num) + 1)
else:print(int(num))
HJ8 合并表记录
描述
数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。
提示:
0 <= index <= 11111111
1 <= value <= 100000
输入描述:
先输入键值对的个数n(1 <= n <= 500)
接下来n行每行输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
示例1
输入:
4
0 1
0 2
1 2
3 4输出:
0 3
1 2
3 4
示例2
输入:
3
0 1
0 2
8 9输出:
0 3
8 9
实现代码:
num = int(input())
dic = {}
for i in range(num):k, v = input().split() # 一行输入多个变量k, v = int(k), int(v)if k not in dic:dic[k] = velse:dic[k] += v
for k, v in sorted(dic.items()):#dict按key升序遍历print(k, v)# dict按value升序遍历:
# for key,value in sorted(dic.items(),key=lambda x:x[1]):
# print(key,value)
HJ9 提取不重复的整数
描述
输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
保证输入的整数最后一位不是 0 。
数据范围: 1≤�≤108 1≤n≤108
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
示例1
输入:
9876673输出:
37689
实现代码:
num = int(input())
res = []
while(num):temp = num % 10if(temp not in res):res.append(temp)num = int(num / 10)
for i in res:print(i, end='')
HJ10 字符个数统计
描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
数据范围: 1≤�≤500 1≤n≤500
输入描述:
输入一行没有空格的字符串。
输出描述:
输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。
示例1
输入:
abc输出:
3
示例2
输入:
aaa输出:
1
实现代码:
s = input()
s_set = set()
for i in s:if(i not in s_set):s_set.add(i)
print(len(s_set))
HJ11 数字颠倒
描述
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
数据范围: 0≤�≤230−1 0≤n≤230−1
输入描述:
输入一个int整数
输出描述:
将这个整数以字符串的形式逆序输出
示例1
输入:
1516000输出:
0006151
示例2
输入:
0输出:
0
实现代码:
num = int(input())
if(num / 10 == 0):print(num)
res = []
while(num):temp = num % 10res.append(temp)num = int(num / 10)
for i in res:print(i, end = '')
HJ12 字符串反转
描述
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
输入描述:
输入一行,为一个只包含小写字母的字符串。
输出描述:
输出该字符串反转后的字符串。
示例1
输入:
abcd输出:
dcba
实现代码:
s = input()
print(s[::-1])
HJ13 句子逆序
描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
数据范围:输入的字符串长度满足 1≤�≤1000 1≤n≤1000
注意本题有多组输入
输入描述:
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述:
得到逆序的句子
示例1
输入:
I am a boy输出:
boy a am I
示例2
输入:
nowcoder输出:
nowcoder
实现代码:
s = input().split(' ')
s.reverse()
print(' '.join(s))
HJ14 字符串排序
描述
给定 n 个字符串,请对 n 个字符串按照字典序排列。
数据范围: 1≤�≤1000 1≤n≤1000 ,字符串长度满足 1≤���≤100 1≤len≤100
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
示例1
输入:
9
cap
to
cat
card
two
too
up
boat
boot输出:
boat
boot
cap
card
cat
to
too
two
up
实现代码:
num = int(input())
dic = {}
for i in range(num):s = input()dic[i] = s
#sorted(dic.items(), key=lambda x:x[1])返回的是list的数组
for k, v in sorted(dic.items(), key=lambda x:x[1]):#按value值升序排列print(v)
HJ15 求int型正整数在内存中存储时1的个数
描述
输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
数据范围:保证在 32 位整型数字范围内
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
示例1
输入:
5输出:
2
示例2
输入:
0输出:
0
实现代码:
num = int(input())
num_bit = bin(num)[2:]
print(num_bit.count('1'))
HJ21 简单密码
描述
现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应: 1–1, abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, tuv–8 wxyz–9, 0–0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9.
而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。
数字和其它的符号都不做变换。
数据范围: 输入的字符串长度满足 1≤�≤100 1≤n≤100
输入描述:
输入一组密码,长度不超过100个字符。
输出描述:
输出密码变换后的字符串
示例1
输入:
YUANzhi1987输出:
zvbo9441987
实现代码:
s = input()
dic = {"1": "1","a": "2","b": "2","c": "2","d": "3","e": "3","f": "3","g": "4","h": "4","i": "4","j": "5","k": "5","l": "5","m": "6","n": "6","o": "6","p": "7","q": "7","r": "7","s": "7","t": "8","u": "8","v": "8","w": "9","x": "9","y": "9","z": "9","0": "0",
}
res = ''
for i in s:if(i.isupper()):i = i.lower()if(i != 'z'):res += chr(ord(i) + 1)#得到字母的ASSIC码再将其后移一位else:res += 'a'#如果是最后一个字母'z',则循环到'a'elif(i.islower()):res += dic[i]else:res += i
print(res)
HJ23 删除字符串中出现次数最少的字符
描述
实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
数据范围:输入的字符串长度满足 1≤�≤20 1≤n≤20 ,保证输入的字符串中仅出现小写字母
输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
示例1
输入:
aabcddd输出:
aaddd
实现代码:
s = input()
dic = {}
for i in s:if i not in dic:dic[i] = 1else:dic[i] += 1
min_count = min(dic.values()) # 找出出现次数最少的字母
s_del = []
for k in dic:if dic[k] == min_count:s = s.replace(k, "") # 用空字符替换掉出现次数最少的字符
print(s)
HJ31 单词倒排
描述
对字符串中的所有单词进行倒排。
说明:
1、构成单词的字符只有26个大写或小写英文字母;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;
数据范围:字符串长度满足 1≤�≤10000 1≤n≤10000
输入描述:
输入一行,表示用来倒排的句子
输出描述:
输出句子的倒排结果
示例1
输入:
I am a student输出:
student a am I
示例2
输入:
$bo*y gi!r#l输出:
l r gi y bo
实现代码:
s = input()
for i in s:if(i.islower() == False and i.isupper() == False):s = s.replace(i, ' ')#用空格把冗余的字符去除
res = s.split(' ')
res.reverse()
print(' '.join(res))
HJ34 图片整理
描述
Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过代码解决。
Lily使用的图片使用字符"A"到"Z"、"a"到"z"、"0"到"9"表示。
数据范围:每组输入的字符串长度满足 1≤�≤1000 1≤n≤1000
输入描述:
一行,一个字符串,字符串中的每个字符表示一张Lily使用的图片。
输出描述:
Lily的所有图片按照从小到大的顺序输出
示例1
输入:
Ihave1nose2hands10fingers输出:
0112Iaadeeefghhinnnorsssv
实现代码:
s = input()
print(''.join(sorted(s)))
HJ35 蛇形矩阵
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
例如,当输入5时,应该输出的三角形为:
1 3 6 10 152 5 9 144 8 137 1211
输入描述:
输入正整数N(N不大于100)
输出描述:
输出一个N行的蛇形矩阵。
示例1
输入:
4输出:
1 3 6 10
2 5 9
4 8
7
实现代码:
num = int(input())
for i in range(1, num + 1):step = i + 1# 每一行的步长start = (i * (i - 1)) // 2 + 1# 每一行的第一个值print(start, end = '')for j in range(2, num+2-i):#每行输出多少个值start += stepprint('', start, end = '')step += 1print()#换行
HJ37 统计每个月兔子的总数
描述
有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。
例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。
一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?
数据范围:输入满足 1≤�≤31 1≤n≤31
输入描述:
输入一个int型整数表示第n个月
输出描述:
输出对应的兔子总数
示例1
输入:
3输出:
2
实现代码:
month = int(input())
n = month - 1
def fun(n):if(n < 2):return 1else:return fun(n-1) + fun(n-2)
print(fun(n))
HJ40 统计字符
描述
输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。
数据范围:输入的字符串长度满足 1≤�≤1000 1≤n≤1000
输入描述:
输入一行字符串,可以有空格
输出描述:
统计其中英文字符,空格字符,数字字符,其他字符的个数
示例1
输入:
1qazxsw23 edcvfr45tgbn hy67uj m,ki89ol.\\/;p0-=\\][输出:
26
3
10
12
实现代码:
输入:
1qazxsw23 edcvfr45tgbn hy67uj m,ki89ol.\\/;p0-=\\][输出:
26
3
10
12
HJ54 表达式求值
描述
给定一个字符串描述的算术表达式,计算出结果值。
输入字符串长度不超过 100 ,合法的字符包括 ”+, -, *, /, (, )” , ”0-9” 。
数据范围:运算过程中和最终结果均满足 ∣���∣≤231−1 ∣val∣≤231−1 ,即只进行整型运算,确保输入的表达式合法
输入描述:
输入算术表达式
输出描述:
计算出结果值
示例1
输入:
400+5输出:
405
实现代码:
print(eval(input()))
HJ56 完全数计算
描述
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
输入n,请输出n以内(含n)完全数的个数。
数据范围: 1≤�≤5×105 1≤n≤5×105
输入描述:
输入一个数字n
输出描述:
输出不超过n的完全数的个数
示例1
输入:
1000输出:
3
实现代码:
from math import sqrt
num = int(input())
count = 0
for i in range(1, num+1):sum = 0for j in range(1, i):if(i % j == 0):sum += jif(sum == i):count += 1
print(count)
HJ62 查找输入整数二进制中1的个数
输入一个正整数,计算它在二进制下的1的个数。
注意多组输入输出!!!!!!
数据范围: 1≤�≤231−1 1≤n≤231−1
输入描述:
输入一个整数
输出描述:
计算整数二进制中1的个数
示例1
输入:
5输出:
2说明:
5的二进制表示是101,有2个1
示例2
输入:
0输出:
0
实现代码:
x = int(input())
y = int(input())
s1 = bin(x)[2:]
s2 = bin(y)[2:]
print(s1.count('1'))
print(s2.count('1'))
HJ73 计算日期到天数转换
描述
根据输入的日期,计算是这一年的第几天。
保证年份为4位数且日期合法。
进阶:时间复杂度:�(�) O(n) ,空间复杂度:�(1) O(1)
输入描述:
输入一行,每行空格分割,分别是年,月,日
输出描述:
输出是这一年的第几天
示例1
输入:
2012 12 31输出:
366
示例2
输入:
1982 3 4输出:
63
实现代码:
s = input().split(' ')
y, m, d = int(s[0]), int(s[1]), int(s[2])
month = [31,28,31,30,31,30,31,31,30,31,30,31]
total_days = sum(month[:m-1]) + d
if(m > 2 and (y%4==0 and y%100!=0 or y%400==0)):#出现闰年的情况total_days += 1
print(total_days)
HJ81 字符串字符匹配
描述
判断短字符串S中的所有字符是否在长字符串T中全部出现。
请注意本题有多组样例输入。
数据范围:1≤���(�),���(�)≤200 1≤len(S),len(T)≤200
进阶:时间复杂度:�(�) O(n) ,空间复杂度:�(�) O(n)
输入描述:
输入两个字符串。第一个为短字符串,第二个为长字符串。两个字符串均由小写字母组成。
输出描述:
如果短字符串的所有字符均在长字符串中出现过,则输出字符串"true"。否则输出字符串"false"。
示例1
输入:
bc
abc输出:
true说明:
其中abc含有bc,输出"true"
实现代码:
s1 = list(set(input()))
s2 = list(set(input()))
for i in s1:if i not in s2:print("false")break# 直到最后一个字符都在s2里,那么我们称字符串匹配成功if i == s1[-1] and i in s2:print("true")
HJ84 统计大写字母个数
描述
找出给定字符串中大写字符(即'A'-'Z')的个数。
数据范围:字符串长度:1≤∣�∣≤250 1≤∣s∣≤250
字符串中可能包含空格或其他字符
进阶:时间复杂度:�(�) O(n) ,空间复杂度:�(�) O(n)
输入描述:
对于每组样例,输入一行,代表待统计的字符串
输出描述:
输出一个整数,代表字符串中大写字母的个数
示例1
输入:
A 1 0 1 1150175017(&^%&$vabovbaoadd 123#$%#%#O输出:
2
实现代码:
s = input()
cnt = 0
for i in s:if(i.isupper()):cnt += 1
print(cnt)
HJ85 最长回文子串
描述
给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。
所谓回文串,指左右对称的字符串。
所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串
数据范围:字符串长度1≤�≤350 1≤s≤350
进阶:时间复杂度:�(�) O(n) ,空间复杂度:�(�) O(n)
输入描述:
输入一个仅包含小写字母的字符串
输出描述:
返回最长回文子串的长度
示例1
输入:
cdabbacc输出:
4说明:
abba为最长的回文子串
实现代码:
def isHuiWenStr(subStr:str):#判断当前子串是不是回文字符start = 0end = len(subStr) - 1while(start < end):if(subStr[start] != subStr[end]):return Falsestart = start + 1end = end - 1return Trues = input()
if(len(s) < 2):print(s)
maxLen = 1#记录最大回文字符长度
for i in range(len(s)-1):for j in range(i + 1, len(s)):if((j - i + 1) > maxLen and isHuiWenStr(s[i:j+1])):maxLen = j - i + 1
print(maxLen)
HJ86 求最大连续bit数
描述
求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
数据范围:数据组数:1≤�≤5 1≤t≤5 ,1≤�≤500000 1≤n≤500000
进阶:时间复杂度:�(����) O(logn) ,空间复杂度:�(1) O(1)
输入描述:
输入一个int类型数字
输出描述:
输出转成二进制之后连续1的个数
示例1
输入:
200输出:
2说明:
200的二进制表示是11001000,最多有2个连续的1。
实现代码:
num = int(input())
s = bin(num)[2:]
res = 1
temp = 1
for i in range(len(s)):if(s[i] == '1'):for j in range(i + 1, len(s)):if(s[i] == s[j]):temp += 1else:breakres = max(res, temp)temp = 1
print(res)
HJ94 记票统计
描述
请实现一个计票统计系统。你会收到很多投票,其中有合法的也有不合法的,请统计每个候选人得票的数量以及不合法的票数。
(注:不合法的投票指的是投票的名字不存在n个候选人的名字中!!)
数据范围:每组输入中候选人数量满足 1≤�≤100 1≤n≤100 ,总票数量满足 1≤�≤100 1≤n≤100
输入描述:
第一行输入候选人的人数n,第二行输入n个候选人的名字(均为大写字母的字符串),第三行输入投票人的人数,第四行输入投票。
输出描述:
按照输入的顺序,每行输出候选人的名字和得票数量(以" : "隔开,注:英文冒号左右两边都有一个空格!),最后一行输出不合法的票数,格式为"Invalid : "+不合法的票数。
示例1
输入:
4
A B C D
8
A D E CF A GG A B输出:
A : 3
B : 1
C : 0
D : 1
Invalid : 3说明:
E CF GG三张票是无效的,所以Invalid的数量是3.
实现代码:
n1 = int(input())
s1 = input().split(" ")
n2 = int(input())
s2 = input().split(" ")
dic = {}
for i in s1:dic[i] = 0
for k in dic:#统计票数for i in s2:if i == k:dic[k] += 1
sum = 0
for k, v in dic.items():#统计总的有效票数sum += v
dic.update({'Invalid': len(s2) - sum})#更新无效票数for k, v in dic.items():print(k, ":", v)
HJ96 表示数字
描述
将一个字符串中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。
数据范围:字符串长度满足 1≤�≤100 1≤n≤100
输入描述:
输入一个字符串
输出描述:
字符中所有出现的数字前后加上符号“*”,其他字符保持不变
示例1
输入:
Jkdi234klowe90a3输出:
Jkdi*234*klowe*90*a*3*
实现代码:
s = input()
res = ""
if s[0] in {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}:res = "*" + resres += s[0]
else:res += s[0]
for i in range(1, len(s)):if (s[i - 1] in {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}and s[i] not in {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}or s[i] in {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}and s[i - 1] not in {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}):res += "*"res += s[i]else:res += s[i]
if s[-1] in {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}:res += "*"
print(res)
HJ102 字符统计
描述
输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。
数据范围:字符串长度满足 1≤���(���)≤1000 1≤len(str)≤1000
输入描述:
一个只包含小写英文字母和数字的字符串。
输出描述:
一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。
示例1
输入:
aaddccdc输出:
cda说明:
样例里,c和d出现3次,a出现2次,但c的ASCII码比d小,所以先输出c,再输出d,最后输出a.
实现代码:
s = input()
dic = {}
for i in s:if i not in dic:dic[i] = 1else:dic[i] += 1
dic = sorted(dic.items(), key=lambda x: x[0]) # key先按字符ASCII排序
dic = sorted(dic, key=lambda x: x[1], reverse=True) # 按统计数目value排序,再按降序排列
for k, v in dic:print("".join(k), end="")
HJ106 字符逆序
描述
将一个字符串str的内容颠倒过来,并输出。
数据范围:1≤���(���)≤10000 1≤len(str)≤10000
输入描述:
输入一个字符串,可以有空格
输出描述:
输出逆序的字符串
示例1
输入:
I am a student输出:
tneduts a ma I
示例2
输入:
nowcoder输出:
redocwon
实现代码:
s = input().split(' ')
s.reverse()
for i in s:print(''.join(i[::-1]), end = ' ')
2、中等题
HJ26 字符串排序
描述
编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出: aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y
数据范围:输入的字符串长度满足 1≤�≤1000 1≤n≤1000
输入描述:
输入字符串
输出描述:
输出字符串
示例1
输入:
A Famous Saying: Much Ado About Nothing (2012/8).输出:
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
实现代码:
s = input()
s_char = []
res = ''
for i in s:#先筛选出来字母字符if(i.isalpha()):s_char.append(i)
# s_char.sort(key=lambda x: x.upper())
s_char.sort(key=lambda x:x.lower())#全转成小写再排序
j = 0
for i in s:if(i.isalpha()):res += s_char[j]j += 1else:res += i
print(res)
二、笔试真题篇
三、面试篇
查看全文
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/2212974.html
如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!
相关文章:
华为暑期实习
一、机试练习篇
1、简单题
HJ1 字符串最后一个单词的长度
描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代……
Mac配置hosts文件
Mac配置hosts文件 1.本地编辑hosts文件,具体操作如下在空白桌面上点击,键入commandshiftG出来一个前往文件夹的界面
输入/etc/hosts找到hosts文件 拷贝出来一份,编辑后替换即可,记得备份一下 2.通过终端vim编辑hosts文件……
iOS 冒泡排序,直接插入排序,希尔排序
1.前言:
作为一个IOS开发工程师,上班没事的时候试着自己写一下排序的,感觉应该很快写出来,结果还是在修修改改中调试更正过来。眼高手低的毛病得改,什么都得敲一下才能记得更牢固,还是记录一下吧。
2.冒泡排序 原理&……
Python基础之列表(一)
序言:python环境:python3.6 开发工具:pycharm 目前正在学习python中,联系代码记录一份希望一起学习进步。
列表一
列表跟OC中的数组比较类似,这里记录一下简单的操作:例如:列表元素拼接&#……
Python基础之基本文件操作(二)
注释:进本文件操作在这章的例子中针对txt文件的操作,例如创建,读写,单行操作,多行读取,等。
基本文件操作
txt文本的简单操作,详细注释已经在代码的后面进行了标注需要的可以自己去运行&#……
基于 NginxLua 实现自建服务端埋点系统
前言
埋点数据一般取决于服务提供商想从用户身上获取什么信息。通常来讲,主要分为用户的基本属性信息和行为信息。用户的基本属性信息主要包括:年龄、性别、设备等。行为信息即用户的点击行为和浏览行为,在什么时间,哪个用户点击……
springboot调用网关直接报:503
目录 前言解决办法前言
最近搭建gateway+微服务,调用接口直接提示503
解决办法
我在网关模块的pom文件中添加了依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-clou…
作为一名软件开发人,应该发声:中国电科(CETC)员工狂骂领导事件
目录前言事件总结前言
首先,介绍下,中国电科(CETC)。
中国电子科技集团有限公司(外文名称China Electronics Technology Group Corporation,中文简称中国电科,英文简称CETC)&#……
electron+vue3全家桶+vite项目搭建【七】集成axios并封装请求发送
引入
如果需要多语言支持,那么最好在项目搭建之初我们就集成好国际化
axios官网
demo项目地址
1.引入依赖 npm install axios2.封装通用请求工具类
我们在src下新建utils目录,然后创建一个request.ts
这里我们直接参考 vue3-element-admin对请求的……
Photoshop2023常用快捷键和使用技巧(作为备忘)
自己使用PS多年积累下来的史上最全快捷键及个人总结的使用技巧(支持最新版PS2023),作为备忘,如果能顺便帮助到您,望给我个赞!(你如果能把下面东西全部记住并理解,那么你的PS技术层面……
数据要素化条件之一:原始性
随着技术的发展,计算机不仅成为人类处理信息的工具,而且逐渐地具有自主处理数据的能力,出现了替代人工的数据智能技术。数据智能的大规模使用需要关于同一分析对象或同一问题的、来源于不同数据源的海量数据。这种数据必须是针对特定对象的记……
【面试题 高逼格利用 类实现加法】编写代码, 实现多线程数组求和.
编写代码, 实现多线程数组求和.关键1. 数组的初始化关键2. 奇偶的相加import java.util.Random;public class Thread_2533 {public static void main(String[] args) throws InterruptedException {// 记录开始时间long start System.currentTimeMillis();// 1. 给定一个很长的……
一个python训练
美国:28:麻省理工学院,斯坦福大学,哈佛大学,加州理工学院,芝加哥大学,普林斯顿大学,宾夕法尼亚大学,耶鲁大学,康奈尔大学,哥伦比亚大学,密歇根大学安娜堡分校,约翰霍普金斯大学,西北大学,加州大学伯克利分校,纽约大学,加州大学洛杉矶分校,杜克大学,卡内基梅隆大学,加州大学圣地……
Mybatis03学习笔记
目录 使用注解开发
设置事务自动提交
mybatis运行原理
注解CRUD
lombok使用(偷懒神器,大神都不建议使用)
复杂查询环境(多对一)
复杂查询环境(一对多)
动态sql环境搭建
动态sql常用标签……
编程日记2023/4/16 14:55:50
设置或取得c# NumericUpDown 编辑框值的方法,(注意:不是Value值)
本人在C#开发中使用到了NumericUpDown控件,但是发现该控件不能直接控制显示值,经研究得到下面的解决办法
NumericUpDown由于是由多个控件组合而来的控件,其中包含一个类似TextBox的控件,若想取得或改变其中的值要使用如下方法
N……
编程日记2023/4/16 14:55:46
使用NPOI 技术 的SetColumnWidth 精确控制列宽不能成功的解决办法(C#)
在使用NPOI技术开发自动操作EXCEL软件时遇到不能精确设置列宽的问题。
如
ISheet sheet1 hssfworkbook.CreateSheet("Sheet1");
sheet1.SetColumnWidth(0, 50 * 256); // 在EXCEL文档中实际列宽为49.29
sheet1.SetColumnWidth(1, 100 * 256); // 在EXCEL文……
编程日记2023/4/16 14:55:46
Mysql 数据库zip版安装时basedir datadir 路径设置问题,避免转义符的影响
本人在开发Mysql数据库自动安装程序时遇到个很奇怪的问题,其中my.ini的basedir 的路径设置是下面这样的:
basedir d:\测试\test\mysql
但是在使用mysqld安装mysql服务时老是启动不了,报1067错误,后来查看window事件发现一个独特……
java stream sorted排序 考虑null值
项目里使用到排序, java里没有像C# 里的linq,只有stream,查找stream.sorted源码看到有个
Comparator.nullsLast
然后看了一下实现,果然是能够处理null值的排序,如:minPriceList.stream().sorted(Comparator.comparing(l -> l.g……
spring @EnableConfigurationProperties 实现原理
查看DataSourceAutoConfiguration源码,发现如下代码: Configuration ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class }) EnableConfigurationProperties(DataSourceProperties.class) Import({ DataSourcePoolMetadataProvidersCon……
postman请求https网址没有响应,但是用浏览器有响应,解决办法
遇到个问题:同一个get请求的url,postman请求https网址没有响应,但是用浏览器有响应
url是https开头的,查看错误描述里有一个SSL的选项: 然后根据描述关掉这个选项: 然后就没问题了,能正常请求及……
编程日记2023/4/16 14:55:44