已知一个字符串s=“iuoifdjfjehafp”,其中有重复字母。请找出其中重复次数最多的那个字母。
两种方法:
1, 先排序,再循环一次把重复最多的字母记下来就可以了。但由于排序算法本身效率不高,因此这算是一个用时间换空间的做法。这其实和多次循环扫描的做法没有本质区别。
2, 还有一种方法是,字母一共也就26个。因此可以用26个int 变量 aNumber,bNumber...分别记录每个字母重复的次数,一遍扫描就可以完成。这算是用空间换时间的做法。
但如果把本题换成记录数组中重复最多的单词,这种方法就不适用了,因为单词的组合太多。
下面的示例演示的是第二种方法,语言是Python
def compare():
stocks = ['d', 'r', 'd', 'a', 'f', 'a', 'f', 'f', 's', 's']
maxRepeat=0
repeat=1
i=0
stocks.sort()
while i < len(stocks)-1:
if stocks[i] == stocks[i+1]:
repeat += 1
else:
repeat = 1
if repeat > maxRepeat:
maxRepeat = repeat
i += 1
print(maxRepeat)
compare()