您的位置:首页 > 其它

最长无重复字符的子串 lintcode

2016-10-14 09:38 387 查看
给定一个字符串,请找出其中无重复字符的最长子字符串。

您在真实的面试中是否遇到过这个题? 

Yes

样例

例如,在
"abcabcbb"
中,其无重复字符的最长子字符串是
"abc"
,其长度为 
3

对于,
"bbbbb"
,其无重复字符的最长子字符串为
"b"
,长度为
1


挑战 

O(n) 时间

<pre name="code" class="java">public class Solution {
/**
* @param s: a string
* @return: an integer
*/
public int lengthOfLongestSubstring(String s) {
// write your code here
int res = 0;
String resStr = "";
if(s == null || s.length() == 0)return res;
if(s.length() == 1)return res+1;
int len = s.length();
int[] tmp = new int[len];
Set<Character> set = new HashSet<>();
res = 1;
for(int i = 1; i < len; i++){
if(!set.isEmpty())set.clear();
int tmpLen = 0;
for(int j = i; ; j--){
if(j < 0){
res = Math.max(tmpLen, res);
break;
}
if(!set.contains(s.charAt(j))){
set.add(s.charAt(j));
tmpLen++;
}else{
res = Math.max(tmpLen, res);
break;
}
}

}

return res;
}
}
其他解法参考  http://blog.csdn.net/luxiaoxun/article/details/8036544


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息