反转字符串以在 JavaScript 中查找回文
Reverse string to find palindromes in JavaScript
我有两个字符串。第一个是普通字符串,第二个我想像第一个一样是一个反转的字符串,但在控制台中我没有得到逗号列出的第一个字符串的外观。我该如何解决?
普通字符串 -
尊敬的字符串 -
window.onload = function(){
inputBox = document.getElementById("myText");
btn = document.getElementById('sub');
btn.addEventListener("click",function(event){
event.preventDefault();
findPalindromes(inputBox.value);
});
str = inputBox.value;
function findPalindromes(str) {
var words = str.split(" ");
for (var i = 0; i < words.length - 1; i++) {
words[i] += " ";
}
console.log(words);
var newString = "";
for (var i = words.length - 1; i >= 0; i--) {
newString += words[i];
}
console.log(newString);
}
}
第一个 for
循环不是必需的。您不需要将 space 字符 " "
连接到数组的元素,其中变量赋值 i
var i = 0;
和条件
i < words.length - 1;
在到达数组的最后一个元素之前停止。
var newString = "";
for (var i = words.length - 1; i >= 0; i--) {
newString += words[i] + " ";
}
console.log(newString);
如果你真的只是想知道一个字符串是否是回文,你可以做一些简单的事情:
function isPalindrome(str) {
return str.toLowerCase() === str.toLowerCase().split('').reverse().join('');
}
在您的 "normal" 字符串示例中,您将 words
打印到控制台。我们先看看words
是什么:var words = str.split(" ");
String.split()函数returns一个字符串数组。所以你的 "normal" 字符串实际上是一个字符串数组 (控制台输出中的括号 []
和逗号分隔的字符串表明了这一点).
在第二个示例中,您正在记录 newString
。让我们看看它来自哪里:var newString = "";
newString
是一个字符串。如果你希望它是一个像 words
这样的字符串数组,你可以用 var newString = [];
来声明它。数组不支持 +=
所以 newString += words[i];
会变成 newString.push(words[i]);
上面解释了如何让newString
表现得像words
,你写的代码不是在寻找回文词,而是在寻找回文句:"Bob is Bob"不是回文句(倒过来就是"boB si boB")但它可能是回文句(如果存在的话)。
感谢大家,我为这个问题写了这个解决方案。我希望这是正确的答案。
window.onload = function(){
inputBox = document.getElementById("myText");
btn = document.getElementById('sub');
btn.addEventListener("click",function(event){
event.preventDefault();
findPalindromes(inputBox.value);
});
str = inputBox.value;
function findPalindromes(str) {
var words = str.split(" "),
newString = [];
for (var i = 0; i < words.length - 1; i++) {
if ((words[i] === words[i].split('').reverse().join('')) === true) {
newString.push(words[i]);
}
}
console.log(newString);
}
}
var words = " ";
function reverse_arr(arr){
var i = arr.length - 1;
while(i >= 0){
words += a[i] + " ";
i--;
}
return words;
}
我有两个字符串。第一个是普通字符串,第二个我想像第一个一样是一个反转的字符串,但在控制台中我没有得到逗号列出的第一个字符串的外观。我该如何解决?
普通字符串 -
尊敬的字符串 -
window.onload = function(){
inputBox = document.getElementById("myText");
btn = document.getElementById('sub');
btn.addEventListener("click",function(event){
event.preventDefault();
findPalindromes(inputBox.value);
});
str = inputBox.value;
function findPalindromes(str) {
var words = str.split(" ");
for (var i = 0; i < words.length - 1; i++) {
words[i] += " ";
}
console.log(words);
var newString = "";
for (var i = words.length - 1; i >= 0; i--) {
newString += words[i];
}
console.log(newString);
}
}
第一个 for
循环不是必需的。您不需要将 space 字符 " "
连接到数组的元素,其中变量赋值 i
var i = 0;
和条件
i < words.length - 1;
在到达数组的最后一个元素之前停止。
var newString = "";
for (var i = words.length - 1; i >= 0; i--) {
newString += words[i] + " ";
}
console.log(newString);
如果你真的只是想知道一个字符串是否是回文,你可以做一些简单的事情:
function isPalindrome(str) {
return str.toLowerCase() === str.toLowerCase().split('').reverse().join('');
}
在您的 "normal" 字符串示例中,您将 words
打印到控制台。我们先看看words
是什么:var words = str.split(" ");
String.split()函数returns一个字符串数组。所以你的 "normal" 字符串实际上是一个字符串数组 (控制台输出中的括号 []
和逗号分隔的字符串表明了这一点).
在第二个示例中,您正在记录 newString
。让我们看看它来自哪里:var newString = "";
newString
是一个字符串。如果你希望它是一个像 words
这样的字符串数组,你可以用 var newString = [];
来声明它。数组不支持 +=
所以 newString += words[i];
会变成 newString.push(words[i]);
上面解释了如何让newString
表现得像words
,你写的代码不是在寻找回文词,而是在寻找回文句:"Bob is Bob"不是回文句(倒过来就是"boB si boB")但它可能是回文句(如果存在的话)。
感谢大家,我为这个问题写了这个解决方案。我希望这是正确的答案。
window.onload = function(){
inputBox = document.getElementById("myText");
btn = document.getElementById('sub');
btn.addEventListener("click",function(event){
event.preventDefault();
findPalindromes(inputBox.value);
});
str = inputBox.value;
function findPalindromes(str) {
var words = str.split(" "),
newString = [];
for (var i = 0; i < words.length - 1; i++) {
if ((words[i] === words[i].split('').reverse().join('')) === true) {
newString.push(words[i]);
}
}
console.log(newString);
}
}
var words = " ";
function reverse_arr(arr){
var i = arr.length - 1;
while(i >= 0){
words += a[i] + " ";
i--;
}
return words;
}