[LeetCode] 3. Longest Substring Without Repeating Characters

来源:互联网 发布:linux 启动openoffice 编辑:程序博客网 时间:2024/05/21 23:00

思路:
开辟一个大小为256 * 4的数组作为哈希表存放每个字符最新的下标. 用一个start变量控制最新的开始处, 每次递归都会尝试更新结果. 时间复杂度O(n), 空间复杂度O(1).

int lengthOfLongestSubstring(string s) {    if (s == "") return 0;    int hash[256];    memset(hash, -1, 256 * sizeof(int));    int start = -1, res = 0;    for (int i = 0; i < s.length(); i++) {        // 如果之前的字符串内出现过当前字符, 则把start放到        // 之前出现的当前字符位置, 成为新的开始        if (hash[s[i]] > start)            start = hash[s[i]];        res = max(res, i - start);        hash[s[i]] = i;    }    return res;}
0 0
原创粉丝点击