java - 为什么这段代码没有正确执行?最长子串问题
问题描述
所以我正在尝试解决网页中最长的子串不重复字符问题,当我尝试上传它时,它会向我显示这个错误:
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;
} }
有什么问题吗?如果不是,您认为我的算法有效吗?我无法比较它的性能,因为网页不会让我上传它。
解决方案
您在第 5 行调用 s.charAt(0)。我想他们将空字符串作为测试用例传入,并且您会遇到越界异常。在第 5 行之前添加一个检查以查看字符串长度是否为 0,是否返回 0。
推荐阅读
- sql-server - 保存点上同名交易的问题
- excel - 以动态单元格范围作为电子邮件正文的通知
- c++ - CMake 和 VS 2017:找不到任何 Visual Studio 实例
- c# - BadImageFormatException:试图在 C# 中使用 C++ DLL 文件?
- ios - 如何在 Firebase Storage 中检索现有图像并将其显示在 Swift 5 的 UICollectionViewCells 中?
- node.js - Discord.js:setParent() 不是一个函数,但在文档中它显示它是
- google-apps-script - 如何从特定单元格开始动态获取范围到工作表末尾?
- c++ - 链接器错误:丢弃部分中静态 constexpr 初始化程序列表成员变量的定义
- javascript - Passport.js:LocalStrategy 如何访问用户信息?
- redux - 减速器错误取消所有任务,杀死所有传奇