国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

javascript基礎練習之翻轉字符串與回文

2024-05-06 16:35:19
字體:
來源:轉載
供稿:網友

翻轉字符串

翻轉字符串(Reverse a String),就是把字符串倒序處理的意思,比如給定一個字符串”hello”,翻轉后應該返回”olleh”。

測試用例

  1. reverseString("hello") 應該返回 “olleh”
  2. reverseString("Greetings from Earth") 應該返回 “htraE morf sgniteerG”

實現思路

這里說最方便的方法就是將字符串轉成數組,再顛倒數組并轉成字符串返回。需要用到字符串對象和數組對象的內置方法:

  1. String.split()
  2. Array.reverse()
  3. Array.join()

具體可以去看JavaScript參考手冊

function reverseString(str) { return str.split('').reverse().join('');}reverseString("hello");

一句return搞定,很簡單有木有?!

在此基礎上來看看回文是怎么玩的??

回文

“Madam,I'mAdam.” 這是亞當在伊甸園里碰上夏娃說的第一句話,這句話正著讀和反著讀一模一樣,這樣的句子就是回文,英文里叫Palindrome。

舉個栗子——“上海自來水來自海上”,這句話順著讀和反著讀都是相同的,還有很多英語單詞也是:Level、Madam、Radar、LOL(哈哈哈)…

測試用例

  1. palindrome("Race Car") 應該返回 true
  2. palindrome("not a palindrome") 應該返回 false
  3. palindrome("0_0 (: /-/ :) 0-0") 應該返回 true

實現思路

我們需要寫一個叫palindrome()的方法,傳入一個叫str的參數,如果str是一個Palindromes將返回true,反之為false。

需要注意將標點符號和空格去掉并toUpperCase or toLowerCase后再進行判斷。

需要用到以下知識點:

  • 正則表達式 (regular expression) ,用來過濾符號和空格
  • String.replace() 替換與正則表達式匹配的子串
  • String.toLowerCase() 把字符串轉換為小寫

關于正則表達式

這里要求匹配大小寫英文字母和整數,任何標點符合和空格將被過濾掉。所以可以使用 /[^A-Za-z0–9]/g 或者 /[/W_]/g

  • [^A-Z] 匹配非26個大寫字母中的任意一個
  • [^a-z] 匹配非26個小寫字母中的任意一個
  • [^0-9] 匹配非0到9中的任意一個數字
  • [^_] 匹配非下劃線
  • ^ 匹配字符串的開始
  • /w 注意是小寫,匹配字母或數字或下劃線或漢字
  • /W 注意是大寫,匹配任意不是字母、數字、下劃線、漢字的字符,等價于[^A-Za-z0-9_]
  • g 表示全局搜索

這是我的方法:

function palindrome(str) { str = str.replace(/[/W_]/g,'').toLowerCase(); var reverseStr = str.split('').reverse().join(''); return str===reverseStr;}palindrome("eye");

我在網上看到還可以用For循環來實現:

function palindrome (str) { var reg = /[/W_]/g, regStr = str.toLowerCase().replace(reg, ''), len = regStr.length; for (var i = 0, halfLen = len / 2; i < halfLen; i++){ if (regStr[i] !== regStr[len - 1 - i]) {  return false; } } return true;}

這個思路很巧妙的運用了回文的特點,把整個字符串切成一半,循環遍歷并依次判斷首尾字符是否相等。

還有個運用了遞歸的實現:

function palindrome (str) { // 刪除字符串中不必要的字符 var re = /[/W_]/g; // 將字符串變成小寫字符 var lowRegStr = str.toLowerCase().replace(re, ''); // 如果字符串lowRegStr的length長度為0時,字符串即是palindrome if (lowRegStr.length === 0) { return true; } // 如果字符串的第一個和最后一個字符不相同,那么字符串就不是palindrome if (lowRegStr[0] !== lowRegStr[lowRegStr.length - 1]) { return false; } else { return palindrome(lowRegStr.slice(1, lowRegStr.length - 1)); }}

感覺另外兩個實現思路比我屌多了,自己在編程的路上才走沒多遠,一步一步來吧。

對了,別糾結翻轉字符串和回文的區別了!翻轉字符串僅僅是將倒序后的字符串返回;而回文面對的則是更長更復雜的句子,需要將過濾掉空格和標點符號的句子和倒序后的句子比較是否相等。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者使用Javascript能帶來一定的幫助,如果有疑問大家可以留言交流。謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舞阳县| 焦作市| 霍城县| 浦北县| 凤山县| 万安县| 凤翔县| 萨迦县| 常宁市| 石林| 东乡| 扎鲁特旗| 沈丘县| 敦化市| 乐平市| 平原县| 吉林市| 高碑店市| 上饶市| 赣榆县| 双江| 松原市| 四会市| 哈尔滨市| 麦盖提县| 南部县| 温泉县| 盱眙县| 建德市| 文登市| 惠水县| 麟游县| 中山市| 廉江市| 仙桃市| 噶尔县| 江城| 交口县| 枣庄市| 麻城市| 乳山市|