Python 经典算法100及解析

1:找出字符串s="aaabbbccceeefff111144444"中,字符出现次数最多的字符

(1)考虑去重。
首先将字符串进行过滤去重,这样在根据这些字符进行循环查询时,将会减少循环次数,提升效率。但是本人写的代码较为臃肿,有更好的希望留言评论

   `小狐狸这儿有一个免费分享编程 Python相关学习资料的基地688244617 快来加入吧!
     str =` 'a1fsfs111bbbcccccvvvvvnnnnboooooosssnb'
     
    class Countvalue():
        def countvalue(self, str1):
            '''
            利用set自身的去重功能
        :param str1: 对传进来的字符串过滤
        :return: 返回一个不含重复字符的list
        '''
        list1 = []
        result = []
        for x in str1:
            list1.append(x)
            result = set(list1)
        return result
    def count(self, str1):
        '''
        对已经去重的list进行遍历,因已去重
        从而减少循环次数,提高检索效率
        :param str1:
        :return:
        '''
        list = Countvalue().countvalue(str1)
        a = 0
        tump = {}
        for x in list:
            test = str1.count(x)
            if test > a:
                tump.clear()
                a = test
                tump[x] = a
            elif test == a:
                a = test
                tump[x] = a
        return tump
 
if __name__ == '__main__':
    print(Countvalue().count(str))

(2)不考虑去重

s = "xssdddeeeeeeeffff"
max_times = 0
result = {}
 
for i in s:
    if s.count(i) > max_times:
        result.clear()
        result[i] = s.count(i)
        max_times = s.count(i)
    elif s.count(i) == max_times:
        result[i] = s.count(i)
 
print result
 还有大量免费Python资料+688244617 快来自行领取吧! 
--------------------- 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值