題目描述:
给定一个字符串,找出不含有重复字符的最长子串的长度。
基础练习 01字串 java
思路1:
依排列组合的所有可能拿到所有子串,依次传入重复子穿的判断方法中进行判断,每次更新出不重复子串的最大长度!
具体代码:
一点思考:
上述算法的时间复杂度似乎不太理想,返回长度的方法以及判断重复的方法都用到了两层for循环,能否改进一下呢???
我是这样想的:
遍历字符串,用一个数据容器来依次接收遍历到的每一个字符,当即将接收容器里已经出现的字符时,用lengh存储容器此时元素的实际个数,即长度,并删除容器内重复位置及之前的所有元素;然后继续接收字符,如果又遇到重复,执行上述操作,比较并更新出最大长度;直到字符串遍历结束,再次更新出最大长度。

因此,我利用Set集合不存储重复元素的特性,选用Set中存取一致的LingkedHashSet来当作算法所需的容器。
具体代码:
讯享网
总结:
第一种思路及算法很蛮力,for嵌套用得多,第二种思路及方法显得就要轻松多了!!!
蛮力法主要包含:
1.String转StringBuffer后可使用的截取功能(SubString());
2.字符串是否出现重复的判断算法
另一种方法主要包含:
1.LingkedHashSet存储无重复元素,且存取一致;
2.Set集合不能边遍历边删除
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/2849.html