思路:

方法一:回溯

拆分给定的字符串,要求拆分后的每个子字符串唯一,求子字符串的最大数目,可以通过回溯算法实现。

对于长度为 n的字符串,有n−1个拆分点。从左到右遍历字符串,对于每个拆分点,如果在此拆分之后,新得到的一个非空子字符串(即拆分点左侧的最后一个被拆分出的非空子字符串)与之前拆分出的非空子字符串都不相同,则当前的拆分点可以进行拆分,然后继续对剩下的部分(即拆分点右侧的部分)进行拆分。

判断拆分出的非空子字符串是否有重复时,可以使用哈希表。

当整个字符串拆分完毕时,计算拆分得到的非空子字符串的数目,并更新最大数目

class Solution {public:unordered_set<string> set;int maxCount;void dfs(string s,int count,int startIndex){if(startIndex>=s.size()){maxCount=max(maxCount,count);return;}for(int ii=startIndex;ii<s.size();ii++){string sub=s.substr(startIndex,ii-startIndex+1);if(set.find(sub)==set.end()){set.insert(sub);dfs(s,count+1,ii+1);set.erase(sub);}}}int maxUniqueSplit(string s) {maxCount=1;dfs(s,0,0);return maxCount;}
};

可能的变型一:


拆分字符串使唯一子字符串的数目最大相关推荐

  1. C++horspool算法查找字符串是否包含子字符串(附完整源码)

    C++horspool算法查找字符串是否包含子字符串 C++Shorspool算法查找字符串是否包含子字符串完整源码(定义,实现,main函数测试) C++Shorspool算法查找字符串是否包含子字 ...

  2. php获取两个字符,php获取两个字符串之间的子字符串

    指定原始字符串,给定开始和结尾字符串,获得这两个字符串之间的子字符串的php函数 /** * Returns the substring between two strings, delimiters ...

  3. Python在字符串中查找子字符串

    这是小白博主在刷leetcode时遇到的一道题,这是博主近日刷的leetcode题库时结果表现最好的一道题,故在此分享这份喜悦. 希望在以后的日子里可以继续进步,持之以恒. 目录 题目介绍 解题思路及 ...

  4. python找最长的字符串_在字符串python中查找最长的唯一子字符串

    我正在尝试一个古老的问题(有很多版本),即寻找一个不包含重复字符的字符串的最长子字符串.我不明白为什么我的尝试没有成功:def findLongest(inputStr): resultSet = [ ...

  5. c语言 字符串 if,C语言用if(strstr(s1,s2))判断字符串是否存在子字符串,无论有没有都会进入到if里是怎么回事?...

    代码作用是首先得到5行数字字符串 然后得到一个想要查找的重复数字型子字符串的长度和数字,比如长度3,数字0,就是查找'000′ 然后判断第几行有子字符串,打印出来 我现在的问题是--不管有没有,返回结 ...

  6. C语言strstr()函数(在主字符串里查找子字符串,返回第一次找到的子字符串以及后面的字符串)

    需包含头文件:C 标准库 - <string.h> 文章目录 描述 声明 参数 返回值 实例 描述 C 库函数 char *strstr(const char *haystack, con ...

  7. 1698 字符串的不同子字符串个数

    题目描述: 给定一个字符串 s,返回 s 的不同子字符串的个数. 字符串的 子字符串 是由原字符串删除开头若干个字符(可能是 0 个)并删除结尾若干个字符(可能是 0 个)形成的字符串. 示例 1: ...

  8. 在字符串中查找子字符串

    今天中午一觉睡醒,刷b站,看见一个视频: 最浅显易懂的 KMP 算法讲解https://www.bilibili.com/video/BV1AY4y157yL?spm_id_from=333.1007 ...

  9. 字符串的匹配搜索,在主字符串中搜寻子字符串,并给出此子字符串的起始位置,否则找不到

    #include<stdio.h> #include<stdlib.h> int main() {int i, j, temp;char str[100], substr[20 ...

最新文章

  1. 《C++编程惯用法——高级程序员常用方法和技巧》——2.9 静态对象的构造
  2. 2015年度个人总结和计划
  3. event.target【转载】
  4. 委托模型和事件模型 [C#]
  5. 慎用dictionaryWithObjectsAndKeys方法
  6. 21年计算机网络原理综合测评,(年对口升学计算机综合测评卷.doc
  7. Spring 三种bean装配的方式
  8. twisted学习资料
  9. 亚马逊ec2服务器上无法使用sudo执行npm命令的解决办法
  10. 吾以为,最适合入门的语言是Java
  11. 0x00007FFFA8336AC5 (msvcr120d.dll) (ConsoleApplication1.exe 中)处有未经处理的异常: 0xC0000005 错误
  12. NJU机器学习导论课程笔记之写作缘由
  13. 怎么将苹果手机屏幕投屏到电脑上
  14. 从智能交通案例看物联网成功的关键
  15. 台式计算机可以连接蓝牙吗,蓝牙耳机怎么连接台式电脑?台式电脑连接蓝牙耳机的方法...
  16. RQNOJ 341 星门跳跃【解题报告】
  17. FPGA中CDC问题
  18. java初级笔记(翁恺男神
  19. Excel导入,一般会遇到的一些问题
  20. 计算机基础应用期末卷,计算机应用基础期末试卷(B卷)

热门文章

  1. 透明度百分比换算十六进制
  2. 使用MiniProfiler跟踪MVC + EF + Bootstrap 2 权限管理系统的性能消耗
  3. 提升 .NET 程序性能的 一些 原则
  4. oracle给每行加上序号,Oracle 根据分类字段给查询结果添加序号
  5. [Pyhon大数据分析] 二.PyEcharts绘制全国各地区、某省各城市地图及可视化分析
  6. 【数据结构与算法】之深入解析“最长有效括号”的求解思路与算法示例
  7. Swift之深入解析如何避免单元测试中的强制解析
  8. 数据库开发——MySQL——函数与流程控制
  9. pip通过阿里源安装
  10. 征战蓝桥 —— 2018年第九届 —— C/C++B组第3题——乘积尾零