王廷瑋|數位醫療|智慧醫療: 3. Longest Substring Without Repeating Characters WFU

2024年7月1日 星期一

3. Longest Substring Without Repeating Characters

3. Longest Substring Without Repeating Characters


給定一個字符串 s,找到最長的不重複字符子串的長度。


Python


class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
char_index = {}
longest = 0
start = 0

for i, char in enumerate(s):
if char in char_index and char_index[char] >= start:
start = char_index[char] + 1
char_index[char] = i
longest = max(longest, i - start + 1)

return longest

16.58MB, 50ms


C++


#include <string>
#include <unordered_map>
#include <algorithm>

using namespace std;

class Solution {
public:
int lengthOfLongestSubstring(string s) {
unordered_map<char, int> charIndex;
int longest = 0;
int start = 0;

for (int i = 0; i < s.size(); i++) {
if (charIndex.find(s[i]) != charIndex.end() && charIndex[s[i]]
                >= start) {
start = charIndex[s[i]] + 1;
}
charIndex[s[i]] = i;
longest = max(longest, i - start + 1);
}

return longest;
}
};

11.17MB, 12ms


Javascript


/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
let charIndex = new Map();
let longest = 0;
let start = 0;

for (let i = 0; i < s.length; i++) {
if (charIndex.has(s[i]) && charIndex.get(s[i]) >= start) {
start = charIndex.get(s[i]) + 1;
}
charIndex.set(s[i], i);
longest = Math.max(longest, i - start + 1);
}

return longest;
};

52.65MB, 78ms