题目一
输入几个字符串,保证输出字符串长度为8,如abc 123456789,输出12345678 90000000 abc00000.
输入:2 abc 123456789
2表示输入两个字符串,abc和123456789表示两个输入的字符串
即abc字符串长度小于8,那么后面就要补0使其长度等于8,123456789长度为9,那么就要将其进行切分,12345678为一个输出字符串,9作为一个新的字符串,因为其长度为1,所以我们要在后面补0使其长度为8,最后,将所有的转换后字符串按照从小到大的顺序进行输出。
代码:
nums=[i for i in input().split(' ')]
length=int(nums.pop(0))
res=[]
for i in range(length):
if not nums[i]:continue
elif len(nums[i])<=8:
res.extend([nums[i]+'0'*(8-len(nums[i]))])
elif len(nums[i])>8:
m=0
while 8*(m+1)<len(nums[i]):
res.append(nums[i][8*m:8*(m+1)])
m+=1
res.append(nums[i][8*m:]+'0'*(8*(m+1)-len(nums[i])))
res.sort()
print(' '.join(res))
题目二
题意:输入一个字符串,字符串中有大括号小括号中括号,且保证都是有效括号,即不存在(()这种情况,同时每一个括号内都有一个或多个字母,括号还可以相互嵌套,每个括号的前面都有一个数字,如3(AB),表示ABABAB,最后我们将这个字符串展开后逆序输出。
例:输入abc3(A) 输出AAAcba
输入abc3(3(A)2(B)) 输出BBAAABBAAABBAAAcba
思路:
我最开始把这道题想简单了,只想了单个括号,以及未嵌套的情况,所以当我测试许久发现想错了,头就有点蒙,以至于最后也没搞出来。
下面的代码是牛客上一位大佬的思路,我自己又写了下,这个代码巧妙的运用了栈!!还有他巧妙的利用了有效括号的特点(这个我自己编的时候也想到了,就是没想到用栈保存数字,以及逻辑没有弄明白#-#,还是需要多写算法题)。
代码:
#全部代码皆是基于有效括号编写的
strs=input()
res=''
number=[]
for i in strs:
if i.isdigit(): #这是个判断是否是数字的函数
number.append(i) #这里保存数字
elif i==')':
tmp=''
thisnumb=int(number.pop()) #利用栈
j=-1
while j>-len(res):
if res[j]!='(': #将括号排除
tmp+=res[j]
j-=1
else:
break
res=res[:j]+thisnumb*tmp[::-1]#更新res
elif i==']':
tmp=''
thisnumb=int(number.pop())
j=-1
while j>-len(res):
if res[j]!='[':
tmp+=res[j]
j-=1
else:
break
res=res[:j]+thisnumb*tmp[::-1]
elif i=='}':
tmp=''
thisnumb=int(number.pop())
j=-1
while j>-len(res):
if res[j]!='{':
tmp+=res[j]
j-=1
else:
break
res=res[:j]+thisnumb*tmp[::-1]
else:
res+=i
print(res[::-1])
题目三
由于我一直想把第二题弄出来,第三题就没看,看很多热用dfs,因为我不太熟,所以等找人问下题目自己写下试试再更新。