面試題-python3 實現刪除字符串中出現次數最少的字符


題目

實現刪除字符串中出現次數最少的字符,若多個字符出現次數一樣,則都刪除。
輸出刪除這些單詞后的字符串,字符串中其它字符保持原來的順序。

輸入描述:
字符串只包含小寫英文字母, 不考慮非法輸入,輸入的字符串長度小於等於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM