2015-06-27 48 views
2

此任務的要求是代碼對輸入字符串返回「true」或「false」。該字符串可以是簡單的單詞或短語。另一個問題沒有解決這些需求。請重新打開並在這裏回答。我正在研究函數來檢查給定的字符串是否是迴文。我的代碼似乎適用於簡單的單詞迴文,但不適用於具有大寫或空格的迴文。檢查字符串是否是JavaScript中的迴文

function palindrome(str) 
{ 
    var palin = str.split("").reverse().join(""); 

    if (palin === str){ 
     return true; 
    } else { 
     return false; 
    } 
} 

palindrome("eye");//Succeeds 
palindrome("Race car");//Fails 
+0

這個問題是問如何產生迴文,沒有檢查兩個字符串是否給予上述標準迴文。如果我們可以重新打開它,我會將其作爲回答發佈:函數isPalindrome(str){str \ str.replace(/ \ s/g,'').toLowerCase(); \t return str === str.split('')。reverse()。join(''); }' –

+0

@ AlexanderO'Mara你在這裏正確的軌道上。我需要幫助瞭解如何在JavaScript中使用regexpressions,並在這裏使用它們來刪除空格和任何標點符號以及任何大寫字母。我希望他們能重開這個問題,因爲另一個問題是完全不同的。 –

+0

@ jfriend00你能重新打開這個嗎?不是重複的 –

回答

3

喜歡的東西if (word === word.split('').reverse().join('')) {/*its a palindrome!*/}我想說

isPalindrome字符串extention:

String.prototype.isPalindrome = function() { 
 
    var cleaned = this.toLowerCase().match(/[a-z]/gi).reverse(); 
 
    return cleaned.join('') === cleaned.reverse().join(''); 
 
} 
 

 
var result = document.querySelector('#result'); 
 
result.textContent = "'eye'.isPalindrome() => " + 'eye'.isPalindrome() + 
 
        "\n'Something'.isPalindrome() => " + 'Something'.isPalindrome() + 
 
        "\n'Race Car'.isPalindrome() => " + 'Race Car'.isPalindrome() + 
 
        "\n'Are we not drawn onward, we few, drawn onward to new era?'.isPalindrome() => " + 
 
         'Are we not drawn onward, we few, drawn onward to new era?'.isPalindrome() + 
 
        "\n'Never even or odd'.isPalindrome() => " + 'Never even or odd'.isPalindrome() + 
 
        "\n'Never odd or even'.isPalindrome() => " + 'Never odd or even'.isPalindrome(); 
 
;
<pre id="result"></pre>

6

首先將字符串轉換爲小寫。此外,不是字母的字符將被刪除。所以字符串比較成爲一個數組,然後將其反轉,並將其再次轉換爲字符串。

Step 1: str1.toLowerCase().replace(...) => "Race car" => "race car" => "racecar" 
Step 2: str2.split("") => ["r","a","c","e","c","a","r"] => .reverse().join() => "racecar" 
Result: str1 === str2 

function palindrome(str) { 
 
    str = str.toLowerCase().replace(/[^a-z]+/g,""); 
 
    return str === str.split("").reverse().join("") 
 
} 
 

 
alert(palindrome("eye")); //true 
 
alert(palindrome("Race car")); //true 
 
alert(palindrome("Madam, I'm Adam")); //true

+0

這將與空白,大小寫和標點符號有相同的問題 –

+0

@AustinHansen更新,現在所有的空格被替換,所有的字符現在都是小寫字母以避免問題 –

0
function palindrome(str) { 

    var st='';  
    st=str.replace(/[^a-z0-9]/ig,"").toLowerCase();  
    var arr=[];  
    arr=st.split('');  
    arr=arr.reverse();  
    var strr='';  
    strr=arr.join(''); 
    if(strr==st) { 
    return true; 
} 
return false; 
}  
palindrome("A man, a plan, a canal. Panama");//calling the function 
相關問題