这里会显示出您选择的修订版和当前版本之间的差别。
— |
algorithm:most-char [2010/06/02 01:18] (当前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== Python找出一串字符中出现最多的字符 ====== | ||
+ | ===== 问题要求 ===== | ||
+ | |||
+ | 给定一个字符串,找出里面出现次数最多的字符。 | ||
+ | |||
+ | ===== 算法思路 ===== | ||
+ | |||
+ | - 将字符串变为列表,进行排序,相同的字母就会排到一起,重新生成新的字符串。 | ||
+ | - 遍历字符串,如果这个字符与前一个字符不一样,则在此字符前加上分隔符(例子中使用的分隔符为逗号:',') | ||
+ | - 将字符串分割为列表,并按照字符串长度排序,最后一个就为出现次数做多的字符 | ||
+ | |||
+ | ===== Python实现 ===== | ||
+ | |||
+ | <code 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) | ||
+ | </code> | ||
+ | |||
+ | 输出结果: | ||
+ | <code> | ||
+ | #$&&((0233457789DEFFIJJLOSWadddddeffjkloqssssssww | ||
+ | ssssss 6 | ||
+ | </code> | ||
+ | |||
+ | ===== 参考 ===== | ||
+ | [[http://www.cnblogs.com/kenandalda/archive/2009/09/20/1570617.html|JS找出一串字符中出现最多的字符]] | ||
+ | |||
+ |