javascript基礎練習之翻轉字串與回文
最近在學習的時候到了基礎演算法這一章節,讓我對js內建物件方法的掌握還有思維邏輯都得到了提升,所藉此機會來寫一寫學習心得和總結。以下這篇文章主要介紹了利用javascript實現翻轉字串與回文的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
翻轉字串
翻轉字串(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")
應該回傳falsepalindrome("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基礎練習之翻轉字串與回文相關文章請關注PHP中文網!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

本文討論了使用瀏覽器開發人員工具的有效JavaScript調試,專注於設置斷點,使用控制台和分析性能。

本文說明瞭如何使用源地圖通過將其映射回原始代碼來調試JAVASCRIPT。它討論了啟用源地圖,設置斷點以及使用Chrome DevTools和WebPack之類的工具。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

本教程將介紹如何使用 Chart.js 創建餅圖、環形圖和氣泡圖。此前,我們已學習了 Chart.js 的四種圖表類型:折線圖和條形圖(教程二),以及雷達圖和極地區域圖(教程三)。 創建餅圖和環形圖 餅圖和環形圖非常適合展示某個整體被劃分為不同部分的比例。例如,可以使用餅圖展示野生動物園中雄獅、雌獅和幼獅的百分比,或不同候選人在選舉中獲得的投票百分比。 餅圖僅適用於比較單個參數或數據集。需要注意的是,餅圖無法繪製值為零的實體,因為餅圖中扇形的角度取決於數據點的數值大小。這意味著任何占比為零的實體

掌握了入門級TypeScript教程後,您應該能夠在支持TypeScript的IDE中編寫自己的代碼,並將其編譯成JavaScript。本教程將深入探討TypeScript中各種數據類型。 JavaScript擁有七種數據類型:Null、Undefined、Boolean、Number、String、Symbol(ES6引入)和Object。 TypeScript在此基礎上定義了更多類型,本教程將詳細介紹所有這些類型。 Null數據類型 與JavaScript一樣,TypeScript中的null
