-
问题描述
连续输入字符串(字符串个数为N,每个字符串长度不大于100),请按照长度为8拆分每个字符串后输出到新的字符串数组,输出的字符串按照升序排序。长度不足8整数倍的字符串请在后面补数字0,空字符串不处理。(输出字符串中的重复字符串不能删除) -
输入:2 abc 123456789
-
输出:12345678 90000000 abc00000
s = list(input().split())
#S用来存储最终待排序的字符串
S = s.copy()
s_len = len(s)
#从第二个字符串开始遍历,进行拆分、补0操作
for i in range(1, s_len):
#长度不足8
if len(s[i])<8:
#保存s[i],方便后续从S中剔除
temp = s[i]
need_0 = 8 - len(s[i])
for j in range(need_0):
s[i]+='0'
S.append(s[i])
#删除S中不足8的那个字符串
S.remove(temp)
#长度大于8
if len(s[i])>8:
length = len(s[i])
i_1 = 0
j = 8
#拆分
while length>8:
length-=8
S.append(s[i][i_1:j])
if length>8:
i_1+=8
j+=8
#剩余的最后一个不足8的字符串
new_s = s[i][j:len(s[i])]
if len(new_s)<8:
need_1 = 8-len(new_s)
for k in range(need_1):
new_s+='0'
S.append(new_s)
#删除那个长度大于8的字符串
S.remove(s[i])
#去除无关字符串
S.remove(s[0])
#默认按照字典序
S.sort()
for i in range(len(S)):
print(S[i], end=' ')
python的一些函数是挺好用的,比如这里的字符串按升序排列,自己写确实慢了点,尤其是像这样的限时考试,时间就是希望。 (私下里有时间可以自己实现,锻炼基本功)
总之要多多熟悉练习才是。
(刚刚发现,这个题在16年9月份的华为校招机试中出现过,输入数据都没变,区别是这次的题目加了字符串按升序排列的要求…