因此,我试图解决网页中最长子字符串而不重复字符的问题,当我尝试上传它时,它将显示此错误:
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;
} }
这有什么问题吗? 如果没有,您认为我的算法有效吗?由于网页不允许我上传它,因此我无法比较它的性能。
答案 0 :(得分:0)
您在第5行中调用s.charAt(0),我想他们将空字符串作为测试用例传递,并且您遇到了超出范围的异常。在第5行之前,添加检查字符串长度是否为0以及是否返回0。
答案 1 :(得分:0)
根据错误描述,它在Solution类的第5行进行了虚拟吐痰。
基于以下图片:
char prevChar = s.charAt(0);
错误是ArrayIndexOutOfBounds,通常表明您尝试从某事中获得的东西要比实际发生的事多(例如,在数组末尾运行)。
在这里,我建议也许在第3行的某些System.out.println行中进行检查以检查方法参数,例如:
(a)如果输入的String s为空
或
(b)如果输入的String是空的(例如“”)
charAt(0)将获得第一个字符,但是如果有零个字符,则尝试获取第一个字符是错误,是吗?
NB:类似这样的东西:
System.out.println("Input was :" + s + ":");
将同时显示这两个条件,
Input was ::
获取空字符串
Input was :null:
输入空字符串