为什么这个嵌入函数不起作用(在javascript算法内部),从而阻止javascript算法被解决?

为什么这个嵌入函数不起作用(在javascript算法内部),从而阻止javascript算法被解决?,javascript,algorithm,Javascript,Algorithm,问题 按字母顺序查找最长的子字符串 示例:“asdfaaaabbbbcttavfffffffdf”中最长的字母顺序子字符串是“aaaabbbbctt” 有些测试的字符串最长可达10000个字符,因此您的代码需要高效 输入将仅由小写字符组成,长度至少为一个字母 如果有多个解决方案,请返回第一个出现的解决方案 我的解决方案 函数最长(str){ //count的第一个元素==最大数字的总计数 //count的第二个元素==到目前为止最长的str 让计数=[0',]; //临时计数==当前str的长

问题

按字母顺序查找最长的子字符串

示例:“asdfaaaabbbbcttavfffffffdf”中最长的字母顺序子字符串是“aaaabbbbctt”

有些测试的字符串最长可达10000个字符,因此您的代码需要高效

输入将仅由小写字符组成,长度至少为一个字母

如果有多个解决方案,请返回第一个出现的解决方案

我的解决方案

函数最长(str){
//count的第一个元素==最大数字的总计数
//count的第二个元素==到目前为止最长的str
让计数=[0',];
//临时计数==当前str的长度
让tempCount=[0];
//将str拆分为一个数组
设strArr=str.split(“”);
//循环遍历字符串的每个字母
for(设i=0;ilog(最长('asdfaaaabbbbcttavvfffffdf')问题在这里:

if(convertToNumber(strArr[i])<convertToNumber((strArr[i]-1)) || convertToNumber((strArr[i]-1))== undefined)
如果
i
将为零,因为
strArr[-1]
将给出未定义的值

const arr=[1,2,3];

控制台日志(arr[-1])我知道OP想要解决他的错误。联邦调查局给了他一个方法。所以我想没有别的事可做了。

我只是把任务的解决方案放在这里,这样OP可以与其他可能的解决方案进行比较

函数最长(str){
设max=1;
设maxStr=str.charAt(0);
设char=maxStr;
设testStr=maxStr;
让计数=1;
对于(i=1;istr.长度)断裂;
计数=1;
testStr=char;
}
}
返回(maxStr);
}

log(最长('asdfaaaabbbbcttavvfffffdf')
你的意思可能是
strArr[i-1]
strArr[i]-1
不是字母,而是一个数字,没有
charCodeAt
方法。这看起来像是家庭作业@Jaycodist从字符串中减去一个数字会得到
NaN
,你不能在
NaN
上调用
.toLowerCase()
。如果你想得到上一个字符,你应该做
[i-1]
而不是
[i]-1
啊,我想我的| |==未定义将修复。这一问题将其改变为:if(convertToNumber(strArr[i]),因为第一个条件失败(产生错误),而不是导致错误。在尝试验证第一个条件时,它确实在
convertToNumber()中失败。您必须在道路的某个地方处理
i=-1
。或者在
convertToNumber()中
或在到达那里之前。
convertToNumber(strArr[i]) < convertToNumber(strArr[i-1])