今天来一个字符串的练习题,重在思路,不断训练自己的思维。
题目:找出字符串中出现次数最多的字符,并输出其出现的位置
代码实现:
#encoding=UTF-8
s = "aaabbbhhiijk"
letter_count_dict={}
for i in s:
if letter_count_dict.has_key(i): #判断是否在字典中出现过
letter_count_dict[i]+=1
else: #没出现过就是1
letter_count_dict[i] = 1
print letter_count_dict
max_letter_occurrence=max(letter_count_dict.values())
#所有出现次数列出来,max函数取最大值
print max_letter_occurrence
max_occurrence_letters=[]
#空列表用来存储,因为有可能是1个或多个
for k,v in letter_count_dict.items():
if v==max_letter_occurrence:
#值=出现最大次数时
max_occurrence_letters.append(k)
#存到列表中
print max_occurrence_letters #遍历
for i in max_occurrence_letters:
max_occurrence_letter_positions = []
#存位置的列表
start_postion=0 #从0开始找
while 1: #死循环
if s.find(i,start_postion) !=-1: #!=-1表示找到了
max_occurrence_letter_positions.append(s.find(i,start_postion))
start_postion=s.find(i,start_postion)+1 #起始位置+1往后找防止记重,因为find找到后不会再找了
else: #当已查找不到目标字母来,说明所有字母都找到了
print "%s positions:%s" %(i,max_occurrence_letter_positions )
break #死循环需要加break
输出结果:
#{'a': 3, 'b': 3, 'i': 2, 'h': 2, 'k': 1, 'j': 1}
#3
#['a', 'b']
#a positions:[0, 1, 2]
#b positions:[3, 4, 5]
原文地址:http://blog.51cto.com/12802674/2051383