天天看點

算法-單詞分析

算法-單詞分析

題目描述

小藍正在學習一門神奇的語言,這門語言中的單詞都是由小寫英文字母組 成,有些單詞很長,遠遠超過正常英文單詞的長度。小藍學了很長時間也記不住一些單詞,他準備不再完全記憶這些單詞,而是根據單詞中哪個字母出現得最多來分辨單詞。

現在,請你幫助小藍,給了一個單詞後,幫助他找到出現最多的字母和這 個字母出現的次數。

輸入描述

輸入一行包含一個單詞,單詞隻由小寫英文字母組成。

對于所有的評測用例,輸入的單詞長度不超過 1000。

輸出描述

輸出兩行,第一行包含一個英文字母,表示單詞中出現得最多的字母是哪 個。如果有多個字母出現的次數相等,輸出字典序最小的那個。

第二行包含一個整數,表示出現得最多的那個字母在單詞中出現的次數。

輸入輸出樣例

示例 1

輸入
lanqiao      
輸出
a
2      

示例 2

輸入
longlonglongistoolong      
輸出
o
6      

運作限制

  • 最大運作時間:1s
  • 最大運作記憶體: 256M

簡單解法:

import os
import sys

# 請在此輸入您的代碼
word=input()
a=0
b=[]
for i in word:
    c=word.count(i)
    if c>=a:
        a=c
for j in word:
    if word.count(j)==a:
        b.append(j)
b.sort()
print(b[0])
print(a)      
算法-單詞分析

代碼優化,使用lambda匿名函數:

a=input()
dicts={}
for i in a:
    dicts[i]=dicts.get(i,0)+1
l = sorted(dicts.items(), key= lambda x:x[1])
print(l[-1][0])
print(l[-1][1])      
算法-單詞分析
s=list(input())
m=sorted(sorted(s),key=lambda x:s.count(x),reverse=True)[0]
print(m,s.count(m),sep='\n')      
import os
import sys

# 請在此輸入您的代碼
a = input()
b = [0]*256
for i in a:
  b[ord(i)]=b[ord(i)]+1
print(chr(b.index(max(b))))
print((max(b)))      
#輸入,并分割每一個字母
str = list(input())
#建立一個長度為26的清單,用于存放字母出現的次數
l = [0]*26
#周遊每一個字母
for s in str:
    #對應位置自加,表示出現一次
    l[ord(s)-ord('a')]+=1
#得到出現次數最多的字母的索引位置
i = l.index(max(l))
#依題目要求輸出
print(chr( i+ord('a') ))
print(max(l))

"""
    ord()   傳回字元對應的ASCII碼
    cha()   傳回ASCII碼對應的字元
"""      

繼續閱讀