1. 程式人生 > >JS迴文演算法

JS迴文演算法

palindrome(迴文)是指一個字串忽略標點符號、大小寫和空格,正著讀和反著讀一模一樣。

如果給定的字串是迴文,返回true,反之,返回false

注意:首先需要刪除字串多餘的標點符號和空格,然後把字串轉化成小寫來驗證此字串是不是迴文。

1、先將字串全部轉換為小寫

  str1 = str.toLowerCase();

2、刪除所有非字母數字字元和下劃線

   reg = /[\w\_]/g  (/\w/ 為刪除所有非字母數字字元,匹配一個非單字字元;/\_/g 匹配下線。)

3、去掉非字母和非數字

      str2 = str1.replace(reg, "");

4、字串分隔成陣列

      str3 = str2.split(""); 

5、反轉陣列中的元素

     str4 = str3.reverse();

6、反轉後的陣列轉化為字串

      str5 = str4.join(""); 
 
 7、如果測試用例是迴文,返回 true;反之,返回 false
 
  return str2 === str5;
例程:

function palindrome(str) {
 
  var  str1 = str.toLowerCase();  
  var reg = /[\W\_]/g;                     
  var str2 = str1.replace(reg, "");
  var str3 = str2.split("");  
  var str4 = str3.reverse(); 
  var str5 = str4.join("");  
 
  return str2 === str5;
}
palindrome("eye");

執行結果:

palindrome("eye") 應該返回一個布林值

palindrome("eye") 應該返回 true.

palindrome("race car") 應該返回 true.

palindrome("not a palindrome") 應該返回 false.

palindrome("A man, a plan, a canal. Panama") 應該返回 true.

palindrome("never odd or even") 應該返回 true.

palindrome("nope") 應該返回 false.

palindrome("almostomla")

應該返回 false.

palindrome("My age is 0, 0 si ega ym.") 應該返回 true.

palindrome("1 eye for of 1 eye.") 應該返回 false.

palindrome("0_0 (: /-\ :) 0-0") 應該返回 true.