A25721. 提示信息:字典序大小,是指字符串中字母在字母表中的先后顺序,即字母表中越靠前的字母,字典序越小。例如:两个字符串acd和cad,两个字符串的第一个字母分别为"a"和"c",其中"a"在字母表中排在"c"的前边,故字符串acd字典序小与字符串cad。假如第一个字母相同,就比较第二个字母,以此类推。编程实现:给定一个长度小于200的字符串S,且字符串中只包含小写字母,然后按照以下要求对字符串S进行去…
填空题
较易
知识点
题目描述
提示信息:
字典序大小,是指字符串中字母在字母表中的先后顺序,即字母表中越靠前的字母,字典序越小。
例如:两个字符串acd和cad,两个字符串的第一个字母分别为"a"和"c",其中"a"在字母表中排在"c"的前边,故字符串acd字典序小与字符串cad。假如第一个字母相同,就比较第二个字母,以此类推。
编程实现:
给定一个长度小于200的字符串S,且字符串中只包含小写字母,然后按照以下要求对字符串S进行去重,并输出去重后的字符串。
要求:
1)如果有重复出现的字母,只保留1个,其他的去掉;
2)不得改变各字母相对位置;
3)保证去重后的字符串的字典序最小。
例如:
S=“cacd”,重复的字母有c,如果去掉第一个字母c,结果为acd;如果去掉第二个字母c结果为cad,比较两个去重后的结果,第一个结果的字典序小于第二个结果的字典序,故选择去掉第一个c,输出acd。
输入描述:
输入一个长度小于200的字符串S,且字符串中只包含小写字母
输出描述:
按照要求对字符串S进行去重,并输出
样例输入:
cdacd样例输出:
acd参考答案
def cstr(str1):
return ord(str1)-96
def Remove(str1):
if str1=='' or len(str1)==1:
return str1
m=[0]*27
for i in range(len(str1)):
m[cstr(str1[i])]+=1
min_idx=0
for i in range(len(str1)):
m[cstr(str1[i])]-=1
if cstr(str1[i])<=cstr(str1[min_idx]):
min_idx=i
if m[cstr(str1[i])]==0:
break
return str1[min_idx]+Remove(str1[min_idx+1:].replace(str1[min_idx],''))
s=input()
print(Remove(s))答案解析
评分标准:
7分:能正确输出一组数据;
7分:能正确输出两组数据;
8分:能正确输出三组数据;
8分:能正确输出四组数据。
上一题
下一题