如何解决创建一个迭代-Javascipt
我在下面有一个递归函数,我只是想知道如何为同一件事创建一个迭代(即没有递归的循环)。非常感谢您的帮助或建议!
function countpalindromes(string,count) {
if (string.length <= 1) {
return count;
}
let [ firstLetter ] = string;
let lastLetter = string[string.length - 1];
if (firstLetter === lastLetter) {
let stringWithoutFirstAndLastLetters = string.substring(1,string.length - 1);
return countpalindromes(stringWithoutFirstAndLastLetters,count + 1);
} else {
return count;
}
}
console.log(countpalindromes("level",0));
console.log(countpalindromes("aya",0));
解决方法
您可以执行以下操作:
function countPalindromes(string) {
let count = 0;
for (let i = 0; i < Math.floor(string.length / 2); i++) {
const letterFromTheStart = string[i];
const letterFromTheEnd = string[(string.length - 1) - i];
if (letterFromTheStart !== letterFromTheEnd) {
break;
}
count++;
}
return count;
}
console.log(countPalindromes("level"));
console.log(countPalindromes("aya"));
重要的部分是i < Math.floor(string.length / 2)
和(string.length - 1) - i
。
第一个确保循环在字符串的一半或之前停止,第二个确保从字符串的结尾开始第n
个字符。
花点时间给我,但这应该有用。
function countPalindromes(string,count) {
for (i = 0; i < Math.floor(string.length/2); i++) {
if (string.charAt(i) === string.charAt(string.length - i-1)) {count++};
}
return count;
}
console.log(countPalindromes("level",0));
console.log(countPalindromes("aya",0));
,
您可以反转字符串并比较字母,直到遇到不匹配项,返回匹配的最后一个索引加一个。
function isPalindrome(word) {
const drow = word.split('').reverse();
for (i = 0; i < drow.length && drow[i] === word[i]; i++);
return i;
}
console.log(isPalindrome("level"));
,
我没有得到您的递归回文功能。只是将递归的一个转换为迭代的一个。
function countPalindromes(string,count) {
if (string.length <= 1) {
return count;
}
let i = 0,j = string.length-1;
for (; i < j && string[i] == string[j]; i++,j--);
return i;
}
console.log(countPalindromes("level",0));
console.log(countPalindromes("aya",0));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。