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