拼多多10/11笔试第二题ac的python代码
Str = list(input())
Str1=[]
for ch in Str:
Str1.append(ch)
Flag=0
if not Str:
print('')
Flag = 1
n = len(Str)
dp=[]
for i in range(n):
if Str[i]=='a':
dp.append('a')
else:
if not dp&nbs***bsp;dp[-1]=='b':
dp.append('b')
else:
while dp and dp[-1]=='a':
dp.pop()
if i<n-1 and Str[i+1]!='a':
dp.append('a')
else:
if 'b' not in Str[i+1:]:
dp.append('b')
else:
dp.append('a')
for i in range(len(dp)):
print(dp[i],end='') 第二题题意,大概是给定一个字符串,字符串全部由ab组成,如果字符串里面存在ab结构可以选择删除掉a或者删除掉b,然后求按照这样方法删除的最短字符串,如果有多个最短字符串则输出字典序最大的(比如aa和ba必须输出ba)
前面搞定输入输出加了一些没用的语句,无视掉就好
主要思想是遍历一次字符串,用一个list存放最小的字符串,‘a’的话直接append进去,b的话分情况讨论,list前一项是b的话直接append进去,是a的话,先开始删除list最后一项,直到list[-1]不等于a,然后讨论,后面的讨论是为了保持字典序最大
只会python,希望ac掉其他题的大佬也能发一下代码学习一下
抛砖引玉了蛤
#拼多多笔试##笔经##拼多多#