求java无重复的最长子串
来源:互联网 发布:windows 批处理 pdf 编辑:程序博客网 时间:2024/06/01 08:40
<pre name="code" class="java">public static List getNoRepeatString(String str) { //存放可能多个的最长子串 List<String> longlists=new ArrayList<String>(); //存放无重复字符所在的最后位置 HashMap<Object, Object> map=new HashMap<Object, Object>(); //开始位置 int start=0; //最大长度 int maxlen=0; int pre=0; int i; //一次遍历字符串 for(i=0;i<str.length();i++) { //如果map中包含这个字符 if(map.containsKey(str.charAt(i))) { //当前子串的长度 int nowlen=i-start; //子串存在map中的次最新的位置 pre=(int) map.get(str.charAt(i)); //找到了最新的串,>=是为了解决多个相等的最长子串问题,比如"abab" if(nowlen>=maxlen) { //这是为了在有最长子串的情况下,清除之前存的子串,比如"ababc" if(nowlen>maxlen) { longlists.clear(); } //设置最长子串和其长度 maxlen=nowlen; longlists.add(str.substring(start,i)); } //只要包含重复的字符,就更新map中的最新位置 //将起始位置设置为重复字符第一次出现位置的后一个位置 start=pre+1; map.put(str.charAt(i), i); } else { //不包含之间放进map中标记最新位置 map.put(str.charAt(i), i); } } //是为了解决从来不包含重复字符的情况 if(i-start>=maxlen) { if(i-start>maxlen) { longlists.clear(); } longlists.add(str.substring(start,i)); } return longlists; }
0 0
- 求java无重复的最长子串
- 求字符串中最长无重复字符的子串
- 求字符串中最长无重复字符的子串
- 求字符串中最长无重复字符的子串
- 求字符串中最长无重复字符的子串
- 求字符串的最长无重复字符子串(C++)
- 求字符串中最长无重复字符的子串
- 求字符串中最长无重复字符的子串
- 求字符串中最长无重复字符的子串
- 2.求最长无重复字符子串和求最长回文子串的算法
- Java实现-最长无重复字符的子串
- java---求字符串中最长的重复子串
- 最长无重复字符的子串
- 最长无重复字符的子串
- 最长无重复字符的子串
- 最长无重复字符的子串
- 最长无重复字符的子串
- 最长无重复字符的子串
- Android xml绘图 (三)-----------Layer
- leetcode 33. Search in Rotated Sorted Array
- &、&&和|、||的区别
- <Learning Transferable Features with Deep Adaptation Networks>caffe 添加MMDLoss层(caffe 自定义网络层)
- 51Nod-1097-拼成最小的数
- 求java无重复的最长子串
- const 关键字全解析
- 极角排序
- 基于Spring MVC的文件传输
- 原生JS(2)<script>标签
- 电路与Multisim 数码管的位选和段选是什么
- Shell 入门
- 仿微信6.0界面
- hdu4351 Digital root