题目描述
从一篇文章中取出 N 个字符串,这 N 个字符串构成一个数组(列表) A,假设每个字符串只包含小写字母,返回由数组 A 中每个字符串都包含的字符构成的字符串,字符串中的字母都按照字母序排列。
输入
输入一个列表,每个字符串都是由引号括起来的。
输出
输出一个符合题意的字符串,注意这个字符串包含双引号"。
样例输入
['bella', 'label', 'roller']样例输出
"ell"提示
本题需要使用 ast 库的 literal_eval 方法来读入列表,参考资料:
https://blog.csdn.net/sinat_33924041/article/details/88350569另外,本题还需要使用 sort() 函数进行排序。
解答
1.先找到输入列表中,长度最小的字符串
2.然后遍历这个最短的字符串(先转换成列表进行遍历)
3.遍历所有字符串,判断最短的字符串中的元素是否在其他字符串中存在
4.将得到的字串排序
lst = eval(input())
#找到长度最短的字符串lst[num]
num = 0
min = len(lst[0])
for i in range(len(lst)):
if min > len(lst[i]):
num = i
min = len(lst[i])
#遍历lst[num]
tmpstr = ''
for i in range(min):
#先将字符串转换为列表
tmplst = list(lst[num])
j = 0
#遍历所有字符串,判断元素是否在其他字符串中同样存在
flag = 0
while j < len(lst):
if tmplst[i] in lst[j]:
pass
else:
flag = 1
break
j += 1
if flag == 0:
tmpstr += tmplst[i]
#对得到的tmpstr进行排序
#转换为ASCII码进行排序
lst1 = list(map(ord,tmpstr))
lst1.sort()
lst1 = list(map(chr,lst1))
tmpstr = ''.join(map(str,lst1))
print('"{}"'.format(tmpstr))