协助 javascript 回文
Assistance with javascript palindrome
我正在尝试使用 JavaScript 中的 for
循环来解决回文问题(我的代码在下面)。
我不知道我做错了什么。如果有人可以请更正和解释,将不胜感激。我对编码还很陌生。
var word = window.prompt("Enter a word");
function palindrome(a) {
var reversed = '';
for (i = 0; i <= a.length; i++) {
reversed = reversed + a[a.length - 1 - i];
}
if (a == reversed) {
return "true";
} else {
return "false";
}
}
document.write(palindrome(word));
在 palindrome
内的 for
循环中,您从 0 ~ a.length
循环并且字符串中 length
索引上的项目是 undefined
所以 reversed
永远是 undefined
.
您需要从 0 ~ a.length - 1
开始循环,如下所示。
var word = window.prompt("Enter a word");
function palindrome(a) {
var reversed = '';
for (i = 0; i < a.length; i++) {
reversed = reversed + a[a.length - 1 - i];
}
console.log(reversed);
if (a == reversed) {
return "true";
} else {
return "false";
}
}
document.write(palindrome(word));
您可以简单地反转字符串,如下所示。
var word = window.prompt("Enter a word");
function palindrome(a) {
const reversed = a.split('').reverse().join('');
if (a == reversed) {
return "true";
} else {
return "false";
}
}
document.write(palindrome(word));
此代码比较第一个字符和最后一个字符,然后继续比较第二个字符和倒数第二个字符,直到用完所有字符。
一旦发现不等式,它就returns错误,因为没有理由继续比较。
let word = window.prompt("Enter a word");
const palindrome = a => {
let last = a.length - 1;
// loop, comparing the values until you find something that doesn't match
for (let first = 0; first <= last; first++, last--) {
if (a[first] !== a[last]) {
return "false";
}
}
// everything matched
return "true";
}
document.getElementById("output").textContent = palindrome(word);
<output id="output"></output>
你的循环:
for (i = 0; i <= a.length; i++) {
reversed = reversed + a[a.length - 1 - i];
}
您只需要删除 -1 并使用 1 开始循环,因为当您到达迭代结束时,您将拥有单词的长度 -1,这将尝试访问负数位置。
更改后:
for (let i = 1; i <= a.length; i++) {
// you can use reversed += a[a.length - i] instead of;
reversed = reversed + a[a.length - i];
}
您也可以使用这样的反转方法来反转字符串:
reversed = a.split('').reverse().join('');
最后,如果您想验证数据句子,您需要删除空格并将其转换为小写或大写(通常转换为小写),因为比较区分大小写(“Party trap”!=“part ytraP”)。
我正在尝试使用 JavaScript 中的 for
循环来解决回文问题(我的代码在下面)。
我不知道我做错了什么。如果有人可以请更正和解释,将不胜感激。我对编码还很陌生。
var word = window.prompt("Enter a word");
function palindrome(a) {
var reversed = '';
for (i = 0; i <= a.length; i++) {
reversed = reversed + a[a.length - 1 - i];
}
if (a == reversed) {
return "true";
} else {
return "false";
}
}
document.write(palindrome(word));
在 palindrome
内的 for
循环中,您从 0 ~ a.length
循环并且字符串中 length
索引上的项目是 undefined
所以 reversed
永远是 undefined
.
您需要从 0 ~ a.length - 1
开始循环,如下所示。
var word = window.prompt("Enter a word");
function palindrome(a) {
var reversed = '';
for (i = 0; i < a.length; i++) {
reversed = reversed + a[a.length - 1 - i];
}
console.log(reversed);
if (a == reversed) {
return "true";
} else {
return "false";
}
}
document.write(palindrome(word));
您可以简单地反转字符串,如下所示。
var word = window.prompt("Enter a word");
function palindrome(a) {
const reversed = a.split('').reverse().join('');
if (a == reversed) {
return "true";
} else {
return "false";
}
}
document.write(palindrome(word));
此代码比较第一个字符和最后一个字符,然后继续比较第二个字符和倒数第二个字符,直到用完所有字符。
一旦发现不等式,它就returns错误,因为没有理由继续比较。
let word = window.prompt("Enter a word");
const palindrome = a => {
let last = a.length - 1;
// loop, comparing the values until you find something that doesn't match
for (let first = 0; first <= last; first++, last--) {
if (a[first] !== a[last]) {
return "false";
}
}
// everything matched
return "true";
}
document.getElementById("output").textContent = palindrome(word);
<output id="output"></output>
你的循环:
for (i = 0; i <= a.length; i++) {
reversed = reversed + a[a.length - 1 - i];
}
您只需要删除 -1 并使用 1 开始循环,因为当您到达迭代结束时,您将拥有单词的长度 -1,这将尝试访问负数位置。
更改后:
for (let i = 1; i <= a.length; i++) {
// you can use reversed += a[a.length - i] instead of;
reversed = reversed + a[a.length - i];
}
您也可以使用这样的反转方法来反转字符串:
reversed = a.split('').reverse().join('');
最后,如果您想验证数据句子,您需要删除空格并将其转换为小写或大写(通常转换为小写),因为比较区分大小写(“Party trap”!=“part ytraP”)。