11 UVA10252 Common Permutation
內容
給定兩個由小寫字母組成的字串a和b。
印出最長的小寫字串x,使得x經過重新排列後為a的子序列,且x經過重新排列後為b的子序列。
輸入說明
輸入包含多行輸入。
連續的兩行為一組,第一行為字串a,第二行為字串b
1~2行為一組輸入,3~4行為一組輸入,依此類推。
每個字串最多包涵1000個小寫字母。
輸出說明
對於每組輸入,輸出本題要求a和b的x
如果有多組符合的x
請印出字母順序由小到大排列的那一個。
範例輸入 #1
pretty
women
walking
down
the
street
範例輸出 #1
e
nw
et
題意:輸入 a、b 兩字串,輸出皆為兩者的子字串
解題:給予兩個小寫字串,找出重複之字母
#定義一個包含所有小寫字母的列表
lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
#進入無限循環,直到使用者中斷程式
while True:
#創建兩個空列表 cp 用於存儲共同出現的字母
cp = []
#從用戶輸入中讀取兩個字符串,並轉換為小寫字母列表
a = list(input().lower())
b = list(input().lower())
#遍歷字母列表
for c in lst:
#計算字母 c 在字符串 a 和 b 中出現的次數
c1 = a.count(c)
c2 = b.count(c)
#求兩個次數的最小值,表示兩個字符串中共同出現的次數
cm = min(c1, c2)
#如果共同出現的次數不為零,將該字母乘以共同出現的次數添加到 cp 列表中
if cm != 0:
cp.append(c * cm)
#印出共同出現的字母
for c in cp:
print(c, end='')
#換行,以便處理下一組輸入
print()