输入一个字符串(不含空格),请寻找输入中包含的所有蛇形字符串。
1. 蛇形字符串的定义:
1.1 字符对定义:字符对有同一字母的大小组成(前大后小),如:Aa,Dd。
1.2 蛇形字符串中包含的字符对必须是连续的字母,并按照字母排序表排序,如:AaBbCc。
2. 从输入字符串中寻找字符组成蛇形字符串(字符顺序不限),符合规则:
2.1 每次寻找最长的蛇形字符串。
2.2 使用过的字符不能重复使用。
3. 输出按首字母排序,如果首字母相同则按长度排序。
def run():
string = input()
out_ls = []
while True:
char_ls = [x for x in string if ('A'<=x<='Z') and (x.lower() in string)]
if len(char_ls)==0:
break
select_ls = list(set(char_ls))
loc_ls = ['_']*26
for x in select_ls:
loc_ls[ord(x)-ord('A')] = x
loc_str = ''.join(loc_ls)
item_ls = loc_str.split('_')
item_ls = sorted(item_ls, key=lambda x: len(x))
out_ls.append(item_ls[-1])
string_ls = [x for x in string]
for x in item_ls[-1]:
string_ls.remove(x)
string_ls.remove(x.lower())
string = ''.join(string_ls)
if len(out_ls)==0:
print('Not Found')
else:
out_ls = sorted(out_ls, key=lambda x: len(x), reverse=True)
out_ls = sorted(out_ls, key=lambda x: x[0])
for x in out_ls:
for xx in x:
print(xx+xx.lower(), end='')
print()
run()
测试一
输入:SxxsrR^AaSs
输出:
Aa
RrSs
Ss
测试二
输入:SwSE$345456DD$$#E#eswsxxsssAAWDxxdderfvcRFER65645g^^%%^UnbnvccTRChnyvcxcvVCFR
输出:
CcDdEeFf
CcDdEe
RrSs
Ss
VvWw