用户工具

站点工具


algorithm:most-char

Python找出一串字符中出现最多的字符

问题要求

给定一个字符串,找出里面出现次数最多的字符。

算法思路

  1. 将字符串变为列表,进行排序,相同的字母就会排到一起,重新生成新的字符串。
  2. 遍历字符串,如果这个字符与前一个字符不一样,则在此字符前加上分隔符(例子中使用的分隔符为逗号:',')
  3. 将字符串分割为列表,并按照字符串长度排序,最后一个就为出现次数做多的字符

Python实现

def find_most_char(s):
  l = [c for c in s]
  l.sort()
  s = "".join(l) 
  print s
  l = [s[i-1]==s[i] and s[i] or "," + s[i] for i in range(len(s))]
  s = "".join(l) 
  l = s.split(',')
  l.sort(lambda x,y: cmp(len(x), len(y)))
  print l[-1], len(l[-1]) 
 
if __name__ == "__main__":
  s = "&(&$#(JFLSDJFOIWEfdjsklfewosd2378907345asdsdwsdqs"
  find_most_char(s)

输出结果:

#$&&((0233457789DEFFIJJLOSWadddddeffjkloqssssssww
ssssss 6

参考

algorithm/most-char.txt · 最后更改: 2010/06/02 01:18 (外部编辑)