题目
给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串 的长度。
(子串是字符串中连续的一部分,子序列中字符在原字符串中可不连续)
解法
class Solution {
public int lengthOfLongestSubstring(String s) {
// 哈希集合,记录每个字符是否出现过
Set<Character> occ = new HashSet<Character>();
int n = s.length();
// 右指针,初始值为-1,相当于我们在字符串左边界的左侧,还没有开始移动
int rk = -1, ans = 0;
for (int i = 0; i < n; i++) {
if(i != 0) {
//除了初始化时(i=0)时的情况,在每次枚举右指针(子串右端点)的一开始,由于i是全新的子串起点,所以需要将前一个字符(第i-1个字符