題目
實現刪除字符串中出現次數最少的字符,若多個字符出現次數一樣,則都刪除。
輸出刪除這些單詞后的字符串,字符串中其它字符保持原來的順序。
輸入描述:
字符串只包含小寫英文字母, 不考慮非法輸入,輸入的字符串長度小於等於20個字節。
輸出描述:
刪除字符串中出現次數最少的字符后的字符串。
輸入例子:
abcdd
輸出例子:
dd
解決代碼
普通點的解決思路,先分別統計每個字符出現的次數,再得到最小的次數,下一步遍歷刪除字符里面次數最少的,可以用replace()方法替換。
"""
實現刪除字符串中出現次數最少的字符,若多個字符出現次數一樣,則都刪除。
輸出刪除這些單詞后的字符串,字符串中其它字符保持原來的順序。
"""
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
a = "abcdd"
# 先分別統計每個元素出現的次數
d = {}
for i in a:
if i not in d.keys():
d[i] = 1
else:
d[i] += 1
print(d)
# 再次遍歷去掉次數最少的
for j in d.keys():
# 判斷等於最小的次數 min(d.values())
if d[j] == min(d.values()):
a = a.replace(j, '')
print(a)
如果全部用內置函數,可以先用min函數得到最少次數的字符,根據此字符就能得到最小的次數,字符串過濾用filter函數實現
# 首先找到出現最少次數的字符
min_str = min(a, key=lambda x: a.count(x))
# 根據這個字符得到次數
n = a.count(min_str)
# 再根據 filter 函數篩選
print("".join(filter(lambda x:a.count(x)>n, a)))
多組輸入
題目描述:
實現刪除字符串中出現次數最少的字符,若多個字符出現次數一樣,則都刪除。輸出刪除這些單詞后的字符串,字符串中其它字符保持原來的順序。
注意每個輸入文件有多組輸入,即多個字符串用回車隔開
輸入描述:
字符串只包含小寫英文字母, 不考慮非法輸入,輸入的字符串長度小於等於20個字節。
輸出描述:
刪除字符串中出現次數最少的字符后的字符串。
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
aa = []
n = 3
while n > 0:
a = input("")
aa.append(a)
n -= 1
for j in aa:
min_str = min(j, key=lambda x: j.count(x))
# 根據這個字符得到次數
n = j.count(min_str)
# 再根據 filter 函數篩選
print("".join(filter(lambda x:j.count(x)>n, j)))
運行結果
aabcd
abcabcf
fbasdfsa
aa
abcabc
fasfsa