zoukankan      html  css  js  c++  java
  • The Most Wanted Letter

    The Most Wanted Letter

    You are given a text, which contains different english letters and punctuation symbols. You should find the most frequent letter in the text. The letter returned must be in lower case.
    While checking for the most wanted letter, casing does not matter, so for the purpose of your search, "A" == "a". Make sure you do not count punctuation symbols, digits and whitespaces, only letters.

    If you have two or more letters with the same frequency, then return the letter which comes first in the latin alphabet. For example -- "one" contains "o", "n", "e" only once for each, thus we choose "e".

    Input: A text for analysis as a string (unicode for py2.7).

    Output: The most frequent letter in lower case as a string.

    题目大义:找出出现次数最多的字母,不区分大小写,如果出现次数相同,则取字典序最小的输出

    一开始想需要诸如'a' : 0,即字母到数字的对应,于是想到dict;查阅str手册后,发现str.lower方法,将字符串转换为小写;最后是对dict的排序,需要先按字母排序,再按出现次序排序(ps:python中的排序是稳定的)

     1 def checkio(text):
     2     lower_text = text.lower()
     3 
     4     appear_time = {}
     5 
     6     for each in lower_text:
     7         if each.islower():
     8             if each not in appear_time:
     9                 appear_time[each] = 0
    10             else:
    11                 appear_time[each] += 1
    12 
    13 
    14     array = appear_time.items();   
    15     array.sort(key=lambda x:x[0])
    16     array.sort(key=lambda x:x[1], reverse=True)
    17 
    18     return array[0][0]

    不过呢,这是笨方法,没有充分利用Python的丰富资源,给出大神bryukh的解答

     1 import string
     2  
     3 def checkio(text):
     4     """
     5     We iterate through latyn alphabet and count each letter in the text.
     6     Then 'max' selects the most frequent letter.
     7     For the case when we have several equal letter,
     8     'max' selects the first from they.
     9     """
    10     text = text.lower()
    11     return max(string.ascii_lowercase, key=text.count)

     学艺不精,现在想来key的意思是每个元素的顺序由key决定吧,max的第一参数是ascii码的小写字母,相当于把26个字母算了个遍

  • 相关阅读:
    Js~数组的操作push,pop,shift,unshift
    SqlServer 字段类型详解
    数据库设计三大范式
    HTML 解析类库HtmlAgilityPack
    设计模式六大原则
    表达式目录树
    在Web.config或App.config中的添加自定义配置
    史上最全 ——LINQ to SQL语句
    C# 加密解密类
    WebService登陆验证四种方式
  • 原文地址:https://www.cnblogs.com/hzhesi/p/3891497.html
Copyright © 2011-2022 走看看