首页 > 解决方案 > 为什么这段代码没有正确执行?最长子串问题

问题描述

所以我正在尝试解决网页中最长的子串不重复字符问题,当我尝试上传它时,它会向我显示这个错误:

class Solution {
public int lengthOfLongestSubstring(String s) {
    HashSet<Character> hash = new HashSet<>();
    int count = 0, finalCount = 1;
    char prevChar = s.charAt(0);
    hash.add(prevChar);


    for (int i = 1; i < s.length(); i++)
    {
        char character = s.charAt(i);
        if (!hash.contains(character)){
            hash.add(character);
            count++;
            if (count > finalCount) finalCount = count;
        }
        else{
            hash.clear();
            hash.add(character);
            count = 1;
        }
        prevChar = character;
    }
    return finalCount;
} }

在此处输入图像描述

有什么问题吗?如果不是,您认为我的算法有效吗?我无法比较它的性能,因为网页不会让我上传它。

标签: javalongest-substring

解决方案


您在第 5 行调用 s.charAt(0)。我想他们将空字符串作为测试用例传入,并且您会遇到越界异常。在第 5 行之前添加一个检查以查看字符串长度是否为 0,是否返回 0。


推荐阅读