热门标签 | 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);

    }

};



推荐阅读
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 在Java编程中,若需实现两个整数(例如2和3)相除并保留两位小数的结果,可以通过精确计算方法来达到预期效果。具体而言,可以利用BigDecimal类进行高精度运算,确保2除以3的结果准确显示为0.66。此外,还可以通过格式化输出来控制小数位数,确保最终结果符合要求。 ... [详细]
  • 如何使用 net.sf.extjwnl.data.Word 类及其代码示例详解 ... [详细]
  • 本文介绍了一种基于最大匹配算法的简易分词程序的设计与实现。该程序通过引入哈希集合存储词典,利用前向最大匹配方法对输入文本进行高效分词处理,具有较高的准确率和较快的处理速度,适用于中文文本的快速分词需求。 ... [详细]
  • Java 8 引入了 Stream API,这一新特性极大地增强了集合数据的处理能力。通过 Stream API,开发者可以更加高效、简洁地进行集合数据的遍历、过滤和转换操作。本文将详细解析 Stream API 的核心概念和常见用法,帮助读者更好地理解和应用这一强大的工具。 ... [详细]
  • 深入解析Spring框架中的双亲委派机制突破方法
    在探讨Spring框架中突破双亲委派机制的方法之前,首先需要了解类加载器的基本概念。类加载器负责将类的全限定名转换为对应的二进制字节流。每个类在被特定的类加载器加载后,其唯一性得到保证。然而,这种机制在某些场景下可能会限制灵活性,因此Spring框架提供了一些策略来突破这一限制,以实现更加动态和灵活的类加载。这些策略不仅能够提升系统的可扩展性,还能在复杂的运行环境中确保类的正确加载和管理。 ... [详细]
  • 开发笔记:校园商铺系统中店铺注册功能模块的Controller层优化与重构
    开发笔记:校园商铺系统中店铺注册功能模块的Controller层优化与重构 ... [详细]
  • 本文介绍了在 Android 平台上的图片上传工具类优化方案,重点讨论了如何通过设置 `MultipartEntity` 来实现图片的高效上传。具体实现中,通过自定义 `UserUploadServiceImpl` 类,详细展示了如何构建和发送包含图片数据的 HTTP 请求。此外,还探讨了如何处理上传过程中的常见问题,如网络异常和文件格式验证,以确保上传的稳定性和可靠性。 ... [详细]
  • 字符串对比竟也暗藏玄机,你是否认同?
    在探讨字符串对比技术时,本文通过两个具体案例深入剖析了其背后的复杂性与技巧。首先,案例一部分详细介绍了需求背景、分析过程及两种不同的代码实现方法,并进行了总结。接着,案例二同样从需求描述出发,逐步解析问题并提供解决方案,旨在揭示字符串处理中容易被忽视的关键细节和技术挑战。 ... [详细]
  • 本文通过复旦大学自然语言处理课程中的一个具体案例,详细解析了中文词汇分割技术的实现方法。该案例利用Java编程语言,结合词典和算法模型,展示了如何高效地进行中文文本的词汇分割,为相关研究和应用提供了宝贵的参考。 ... [详细]
  • 通过移除单一数字优化数据集 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 在Java编程中,`AbstractClassTest.java` 文件详细解析了抽象类的使用方法。该文件通过导入 `java.util.*` 包中的 `Date` 和 `GregorianCalendar` 类,展示了如何在主方法 `main` 中实例化和操作抽象类。此外,还介绍了抽象类的基本概念及其在实际开发中的应用场景,帮助开发者更好地理解和运用抽象类的特性。 ... [详细]
  • 在使用 `useSelector` 选择器时,发现分派操作后状态未能实时更新。这可能是由于 React 组件的渲染机制或 Redux 的状态管理问题导致的。建议检查 `useSelector` 的依赖项和 `dispatch` 的调用时机,确保状态变化能够正确触发组件重新渲染。此外,可以考虑使用 `useEffect` 钩子来监听状态变化,以确保及时更新。 ... [详细]
  • 尽管在Java编程中,“不兼容类型”错误是一个常见问题,但许多开发者仍对其感到困惑。此类错误通常出现在尝试将一个数据类型赋值给另一个不兼容的数据类型时。理解类型系统和正确使用类型转换是解决这一问题的关键。本文将深入探讨该错误的成因,并提供实用的调试技巧和预防措施,帮助开发者有效应对“不兼容类型”问题。 ... [详细]
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社区 版权所有