[LeetCode] 3. Longest Substring Without Repeating Characters

传送门

Description

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given “abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is , with "wke" the length of 3. Note that the answer must be a substring, "wke" is a subsequence and not a substring.

思路

题意:给定一个字符串,问最长且不包含相同字母的子串为多少。

题解:具体实现细节看代码

 
 
 C++:
class Solution {
public:
    //18ms
    int lengthOfLongestSubstring(string s) {
        int pos[256];
        memset(pos,-1,sizeof(pos));
        int st = 0,ed = 0,res = 0;
        int len = s.size();
        for (int i = 0;i < len;i++){
            int index = s[i];
            if (pos[index] == -1 || pos[index] < st){
                pos[index] = i;
                res = max(res,i - st + 1);
            }else{
                st = pos[index] + 1;
                pos[index] = i;
            }
        }
        return res;
    }
};


Java:

public class Solution {
    //56ms
    public int lengthOfLongestSubstring(String s) {
        int[] pos = new int[256];
        char[] str = s.toCharArray();
        Arrays.fill(pos,-1);
        int st = 0,res = 0;
        int len = s.length();
        for (int i = 0;i < len;i++){
            int index = str[i];
            if (pos[index] == -1 || pos[index] < st){
                pos[index] = i;
                res = Math.max(res,i - st + 1);
            }else {
                st = pos[index] + 1;
                pos[index] = i;
            }
        }
        return res;
    }
}
原文地址:https://www.cnblogs.com/ZhaoxiCheung/p/7358938.html