描述:给定字符串,找出字母不带重样儿的最长子串
例:
String str1 = "abdcdbgbesfnsfd";
最长子串:gbesfn
String str2="abcdadd";
最长子串:abcd
代码如下:
package com.jd.leetcodedemo;
import java.util.HashMap;
import java.util.Map;
/**
* LeetCode_3 字符串最大不重复子串
*
* @author tianchuangxin1
* @date Feb 12, 2019 11:34:43 AM
*/
public class LeetCode_3 {
/**
* 获取字符串的最大不重复子串
* @param str
* @return
*/
public static String getMaxSubStr(String str){
String result="";
char[] temp=str.toCharArray();
Map<Integer,Character> cMap=new HashMap<>();
int index=0;
for (int i=0;i<temp.length;i++){
String tempStr="";
index=i;
tempStr=temp[i]+"";
cMap.put(i,temp[i]);
while (index<temp.length){
index++;
if (index!=temp.length) {
if (cMap.containsValue(temp[index])) {
//不添加,进行比较计算
result = (result.length() > tempStr.length()) ? result : tempStr;
cMap.clear();
break;
} else {
cMap.put(index, temp[index]);
tempStr += temp[index] + "";
}
}
}
}
return result;
}
}