字符串找出其中字母不重复连续的最大子串

 时间:2024-10-13 17:15:52

1、public class NoRepeatString { /** * 找出字符串中连续不重复最大字串 * * @p锾攒揉敫aram params * @return */ public Map<Integer,String> withoutNoRepeat(String params){ //存放结果 长度和字符 Map<Integer,String> result = new HashMap<>(16); //中间过程map 存放字符和字符对应位置 Map<String,Integer> temp = new HashMap<>(16); //指针开始位置 int startIndex = 0; //指针结束位置 int endIndex = 0; //最大长度 int maxLength = 0; //截取字符串 String resultStr = ""; for(int i=0;i<params.length();i++){ //查看字符串在map中是否存在 String singleChar = String.valueOf(params.charAt(i)); if(temp.get(singleChar) != null){ //指针开始位置移到这里 if(temp.get(singleChar) > startIndex){ startIndex = temp.get(singleChar); } } //指针后移一位 endIndex++; //将字符放入临时map temp.put(singleChar, i+1); if(endIndex - startIndex > maxLength){ //长度比maxLength的大 maxLength重新赋值 maxLength = endIndex - startIndex; //得到最长字串 resultStr = params.substring(startIndex, endIndex); } } //返回结果 result.put(maxLength,resultStr); return result; }}

2、单元测试:public class Test鲍伊酷雪NoRepeatString { @Test public void noRepeatStr(){ String str = "defdefabc"; NoRepeatString noRepeatString = new NoRepeatString(); Map<Integer, String> integerStringMap = noRepeatString.withoutNoRepeat(str); integerStringMap.forEach((key,value) -> System.out.println("最大字串长度:" + key + ";" + "最大字串为:" + value)); }}

3、执行结果:最大子串长度:6;最大子串为:defabcProcess finished with exit code 0

字符串找出其中字母不重复连续的最大子串
  • 白凤多肉怎么养殖?
  • Xmind软件中如何绘制解二元方程的导图
  • 黄连配干姜可治糖尿病
  • 六龙争霸怎么找回经验
  • 驾校报名一般流程
  • 热门搜索
    无锡 旅游 安吉旅游必去的景点 上海旅游住宿 东江湖旅游攻略 苏州东山旅游攻略 敦煌旅游景点 旅游券 安徽旅游论坛 长春大学旅游学院怎么样 昆明旅游报价