JZ-073-最长不含重复字符的子字符串
最长不含重复字符的子字符串 题目描述
输入一个字符串(只包含 a~z 的字符),求其最长不含重复字符的子字符串的长度。例如对于 arabcacfr,最长不含重复字符的子字符串为 acfr,长度为 4。代码
【JZ-073-最长不含重复字符的子字符串】题目链接: [最长不含重复字符的子字符串]()
import java.util.Arrays;
/**
* 标题:最长不含重复字符的子字符串
* 题目描述
* 输入一个字符串(只包含 a~z 的字符),求其最长不含重复字符的子字符串的长度。例如对于 arabcacfr,最长不含重复字符的子字符串为 acfr,长度为 4。
*/
public class Jz73 {public int longestSubStringWithoutDuplication(String str) {
int curLen = 0;
int maxLen = 0;
int[] preIndexs = new int[26];
Arrays.fill(preIndexs, -1);
for (int curI = 0;
curI < str.length();
curI++) {
int c = str.charAt(curI) - 'a';
int preI = preIndexs[c];
if (preI == -1 || curI - preI > curLen) {
curLen++;
} else {
maxLen = Math.max(maxLen, curLen);
curLen = curI - preI;
}
preIndexs[c] = curI;
}
maxLen = Math.max(maxLen, curLen);
return maxLen;
}public static void main(String[] args) {}
}
【每日寄语】 为人子,方少时;亲师友,习礼仪。
推荐阅读
- Leetcode剑指offer16不含有重复字符的最长子字符串
- 每日一练(35)(最长公共前缀)
- Leetcode3无重复字符的最长子串(滑动窗口解法)
- 【修订版】Leetcode 300 最长递增子序列
- 每日leetcode——3. 无重复字符的最长子串
- 【golang】leetcode中级-零钱兑换&最长上升子序列
- LeetCode刷题|LeetCode刷题 最长递增子序列
- 味道最长情
- JavaScript|JavaScript - 子集1(回溯法)
- 【golang】leetcode中级-字母异位词分组&无重复字符的最长子串