基础练习 01字串 java

基础练习 01字串 java題目描述 给定一个字符串 找出不含有重复字符的最长子串的长度 基础练习 01 字串 java 思路 1 依排列组合的所有可能拿到所有子串 依次传入重复子穿的判断方法中进行判断 每次更新出不重复子串的最大长度 具体代码 一点思考 上述算法的时间复杂度似乎不太理想 返回长度的方法以及判断重复的方法都用到了两层 for 循环 能否改进一下呢 我是这样想的 遍历字符串

大家好,我是讯享网,很高兴认识大家。



題目描述:

  给定一个字符串,找出不含有重复字符的最长子串的长度。

基础练习 01字串 java

思路1:

  依排列组合的所有可能拿到所有子串,依次传入重复子穿的判断方法中进行判断,每次更新出不重复子串的最大长度!

具体代码:

一点思考:

  上述算法的时间复杂度似乎不太理想,返回长度的方法以及判断重复的方法都用到了两层for循环,能否改进一下呢???

我是这样想的:

  遍历字符串,用一个数据容器来依次接收遍历到的每一个字符,当即将接收容器里已经出现的字符时,用lengh存储容器此时元素的实际个数,即长度,并删除容器内重复位置及之前的所有元素;然后继续接收字符,如果又遇到重复,执行上述操作,比较并更新出最大长度;直到字符串遍历结束,再次更新出最大长度。

  因此,我利用Set集合不存储重复元素的特性,选用Set中存取一致的LingkedHashSet来当作算法所需的容器。

具体代码:

讯享网

总结:

第一种思路及算法很蛮力,for嵌套用得多,第二种思路及方法显得就要轻松多了!!!

蛮力法主要包含:

1.String转StringBuffer后可使用的截取功能(SubString());

  2.字符串是否出现重复的判断算法

另一种方法主要包含:

1.LingkedHashSet存储无重复元素,且存取一致;

  2.Set集合不能边遍历边删除

小讯
上一篇 2024-12-27 22:43
下一篇 2024-12-25 15:14

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/2849.html