热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

力扣696.467号问题:8月19日补充说明与解析

力扣696.计数二进制子串和467.独特子串的优美解法虽然被标记为简单题,但在实际解决过程中仍具有一定的挑战性。本文将对这两道题目进行详细的解析和补充说明,特别是8月19日的更新内容,帮助读者更好地理解其中的算法思路和实现方法。通过具体的代码示例和实例分析,我们将展示如何高效地解决这些问题,并探讨其背后的数学原理和优化技巧。

696.计数二进制子串


虽然说是简单题,但我想不出来,这题答案的解法真的很巧妙。

fe1067ae7ead44d4aeebd8c73fbfc9c7.png

 


class Solution {

public:

    int countBinarySubstrings(string s) {

        vectorcounts(s.size(),0);

        int count=1,ans=0;

        for(int i=0;i

            if(s[i+1]!='\0'&&s[i]==s[i+1]){

                count++;

            }

            if(s[i]!=s[i+1]||s[i+1]=='\0'){

                counts.push_back(count);

                count=1;

            }

        }

        for(int i=0;i

            ans+=min(counts[i],counts[i+1]);

        }

        return ans;

 

    }

};



467.环绕字符串中唯一的子字符串


这题我做不来,居然是动态规划,没想到。

5a454c9c8c1a4b9495ae4d12df52d475.png

 


class Solution {

public:

    int findSubstringInWraproundString(string p) {

        vectordp(26,0);

        int k=1;

    dp[p[0]-'a']=1;

        for(int i=1;i

            if((p[i]-p[i-1]+26)%26==1){

                k++;

k代表p每个中字母连续的串的长度。

            }

            else k=1;

            dp[p[i]-'a']=max(dp[p[i]-'a'],k);

如果有重复的连续字母的子串,取较长的那个。

        }

        return accumulate(dp.begin(),dp.end(),0);

    }

};



推荐阅读
author-avatar
雲痕影落_969
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有