反向字符串以在JavaScript中查找回文

时间:2016-12-23 23:42:33

标签: javascript string reverse

我有两个字符串。第一个是正常字符串,第二个我想成为第一个反转字符串,但在控制台中我没有看到像逗号一样列出的第一个字符串。我该如何解决这个问题?

普通字符串 - enter image description here

崇敬的字符串 - enter image description here

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); 
    }
} 

5 个答案:

答案 0 :(得分:5)

如果你真的只想知道字符串是否是回文,你可以做一些简单的事情:

function isPalindrome(str) {
  return str.toLowerCase() === str.toLowerCase().split('').reverse().join('');
}

答案 1 :(得分:1)

第一个for循环不是必需的。您不需要将空格字符" "连接到数组的元素,其中变量赋值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); 

答案 2 :(得分:1)

在“普通”字符串示例中,您将words打印到控制台。我们先来看看words是什么:var words = str.split(" ");

String.split()函数返回一个字符串数组。所以你的“普通”字符串实际上是一个字符串数组(括号[]和控制台输出中逗号分隔的字符串表示这个)

在第二个示例中,您正在记录newString。让我们来看看它来自哪里:var newString = "";

newString是一个字符串。如果您希望它是words之类的字符串数组,则可以使用var newString = [];声明它。数组不支持+=,因此newString += words[i];将成为newString.push(words[i]);

上面解释了如何让newString表现得像words,你写的代码不是寻找回文词,而是回文句:“鲍勃是鲍勃”不是回文(反过来是“boB si boB”)但它可能是回文句(如果存在这样的事情)。

答案 3 :(得分:0)

感谢所有人,我为这个问题编写了这个解决方案。我希望这是正确的答案。

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);
    }
}

答案 4 :(得分:-1)

var words = " ";

function reverse_arr(arr){
    var i = arr.length - 1;
    while(i >= 0){
        words += a[i] + " ";
        i--; 
    }
    return words;
}