网站外链分析,北京中企动力科技股份有限公司,wordpress怎么建立下载,服务器创建多个网站题目
给定一个字符串 s #xff0c;请你找出其中不含有重复字符的最长子串的长度。
示例 1:
输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”#xff0c;所以其长度为 3。 示例 2:
输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是…题目
给定一个字符串 s 请你找出其中不含有重复字符的最长子串的长度。
示例 1:
输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”所以其长度为 3。 示例 2:
输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”所以其长度为 1。 示例 3:
输入: s “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”所以其长度为 3。 请注意你的答案必须是 子串 的长度“pwke” 是一个子序列不是子串。 示例 4:
输入: s “” 输出: 0
提示
0 s.length 5 * 104 s 由英文字母、数字、符号和空格组成
代码
字符对应阿斯克码i指向不重复子串的第一个位置j指向不重复子串的最后一个位置那么这个子串的长度就是j-i1。
我们移动j如果说这个j以前出现过那么就移动左侧的i如果说移动到i的位置对应元素刚好就是j的元素那么就说明找到了重复的数此时S[s[i]] S[s[j]]那么经过S[s[i]]–就可以让S[s[j]]1也就是说再让i向右移动此时i和j夹起来的字符串时没有重复的字符的。
每次更新最长子串长度即可。
int lengthOfLongestSubstring(char * s){int len strlen(s);if(len 0)return 0;int S[256] {0};int i, j, m 0;for(i 0, j 0; j len; j){S[s[j]];while(S[s[j]] 1){S[s[i]]--;i;}if(mj-i1) mj-i1;}return m;
}