拼多多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掉其他题的大佬也能发一下代码学习一下
抛砖引玉了蛤
#拼多多笔试##笔经##拼多多#