翻轉字符串
翻轉字符串(Reverse a String),就是把字符串倒序處理的意思,比如給定一個字符串”hello”,翻轉后應該返回”olleh”。
測試用例
reverseString("hello") 應該返回 “olleh” reverseString("Greetings from Earth") 應該返回 “htraE morf sgniteerG”實現思路
這里說最方便的方法就是將字符串轉成數組,再顛倒數組并轉成字符串返回。需要用到字符串對象和數組對象的內置方法:
String.split() Array.reverse() Array.join()具體可以去看JavaScript參考手冊
function reverseString(str) { return str.split('').reverse().join('');}reverseString("hello");一句return搞定,很簡單有木有?!
在此基礎上來看看回文是怎么玩的⬇️
回文
“Madam,I'mAdam.” 這是亞當在伊甸園里碰上夏娃說的第一句話,這句話正著讀和反著讀一模一樣,這樣的句子就是回文,英文里叫Palindrome。
舉個栗子——“上海自來水來自海上”,這句話順著讀和反著讀都是相同的,還有很多英語單詞也是:Level、Madam、Radar、LOL(哈哈哈)…
測試用例
palindrome("Race Car") 應該返回 true palindrome("not a palindrome") 應該返回 false 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;}
新聞熱點
疑難解答
圖片精選