欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript基礎(chǔ)練習(xí)之翻轉(zhuǎn)字符串與回文

 更新時(shí)間:2017年02月20日 11:27:57   作者:廖柯宇  
最近在學(xué)習(xí)的時(shí)候到了基礎(chǔ)算法這一章節(jié),讓我對(duì)js內(nèi)置對(duì)象方法的掌握還有思維邏輯都得到了提升,所借此機(jī)會(huì)來寫一寫學(xué)習(xí)心得和總結(jié)。下面這篇文章主要介紹了利用javascript實(shí)現(xiàn)翻轉(zhuǎn)字符串與回文的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。

翻轉(zhuǎn)字符串

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

測(cè)試用例

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

實(shí)現(xiàn)思路

這里說最方便的方法就是將字符串轉(zhuǎn)成數(shù)組,再顛倒數(shù)組并轉(zhuǎn)成字符串返回。需要用到字符串對(duì)象和數(shù)組對(duì)象的內(nèi)置方法:

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

具體可以去看JavaScript參考手冊(cè)

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

reverseString("hello");

一句return搞定,很簡(jiǎn)單有木有?!

在此基礎(chǔ)上來看看回文是怎么玩的⬇️

回文

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

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

測(cè)試用例

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

實(shí)現(xiàn)思路

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

需要注意將標(biāo)點(diǎn)符號(hào)和空格去掉并toUpperCase or toLowerCase后再進(jìn)行判斷。

需要用到以下知識(shí)點(diǎn):

關(guān)于正則表達(dá)式

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

  • [^A-Z] 匹配非26個(gè)大寫字母中的任意一個(gè)
  • [^a-z] 匹配非26個(gè)小寫字母中的任意一個(gè)
  • [^0-9] 匹配非0到9中的任意一個(gè)數(shù)字
  • [^_] 匹配非下劃線
  • ^ 匹配字符串的開始
  • \w 注意是小寫,匹配字母或數(shù)字或下劃線或漢字
  • \W 注意是大寫,匹配任意不是字母、數(shù)字、下劃線、漢字的字符,等價(jià)于[^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");

我在網(wǎng)上看到還可以用For循環(huán)來實(shí)現(xiàn):

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;
}

這個(gè)思路很巧妙的運(yùn)用了回文的特點(diǎn),把整個(gè)字符串切成一半,循環(huán)遍歷并依次判斷首尾字符是否相等。

還有個(gè)運(yùn)用了遞歸的實(shí)現(xiàn):

function palindrome (str) {
 // 刪除字符串中不必要的字符
 var re = /[\W_]/g;
 // 將字符串變成小寫字符
 var lowRegStr = str.toLowerCase().replace(re, '');
 // 如果字符串lowRegStr的length長(zhǎng)度為0時(shí),字符串即是palindrome
 if (lowRegStr.length === 0) {
 return true;
 }

 // 如果字符串的第一個(gè)和最后一個(gè)字符不相同,那么字符串就不是palindrome
 if (lowRegStr[0] !== lowRegStr[lowRegStr.length - 1]) {
 return false;
 } else {
 return palindrome(lowRegStr.slice(1, lowRegStr.length - 1));
 }
}

感覺另外兩個(gè)實(shí)現(xiàn)思路比我屌多了,自己在編程的路上才走沒多遠(yuǎn),一步一步來吧。

對(duì)了,別糾結(jié)翻轉(zhuǎn)字符串和回文的區(qū)別了!翻轉(zhuǎn)字符串僅僅是將倒序后的字符串返回;而回文面對(duì)的則是更長(zhǎng)更復(fù)雜的句子,需要將過濾掉空格和標(biāo)點(diǎn)符號(hào)的句子和倒序后的句子比較是否相等。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用Javascript能帶來一定的幫助,如果有疑問大家可以留言交流。謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 第六章之輔組類與響應(yīng)式工具

    第六章之輔組類與響應(yīng)式工具

    Bootstrap,來自 Twitter,是目前最受歡迎的前端框架。本文給大家介紹BootStrap組件之輔組類與響應(yīng)式工具,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • Layer.js實(shí)現(xiàn)表格溢出內(nèi)容省略號(hào)顯示,懸停顯示全部的方法

    Layer.js實(shí)現(xiàn)表格溢出內(nèi)容省略號(hào)顯示,懸停顯示全部的方法

    今天小編就為大家分享一篇Layer.js實(shí)現(xiàn)表格溢出內(nèi)容省略號(hào)顯示,懸停顯示全部的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 鼠標(biāo)移到圖片上變大顯示而不是放大鏡效果

    鼠標(biāo)移到圖片上變大顯示而不是放大鏡效果

    這篇文章主要介紹了通過js實(shí)現(xiàn)的,當(dāng)鼠標(biāo)移到圖片上變大顯示而不是放大鏡效果,需要的朋友可以參考下
    2014-06-06
  • 本地JS文件批量壓縮的操作方法

    本地JS文件批量壓縮的操作方法

    這篇文章主要介紹了本地JS文件批量壓縮的方法,由于之前壓縮的JS文件都比較少,都是手動(dòng)壓縮的。這次需要壓縮的文件比較多,所以用了批量壓縮,特此記錄一下,方便大家和自己以后再用到的時(shí)候備忘
    2022-12-12
  • 詳解如何較好的使用js

    詳解如何較好的使用js

    本文將對(duì)在網(wǎng)頁中引用js常會(huì)出現(xiàn)的問題進(jìn)行匯總,并提出解決問題的具體方案,有助于我們更好的學(xué)習(xí)和使用js,需要的朋友一起來看下吧
    2016-12-12
  • JavaScript實(shí)現(xiàn)環(huán)繞鼠標(biāo)旋轉(zhuǎn)效果

    JavaScript實(shí)現(xiàn)環(huán)繞鼠標(biāo)旋轉(zhuǎn)效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)環(huán)繞鼠標(biāo)旋轉(zhuǎn)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • JavaScript設(shè)計(jì)模式發(fā)布訂閱模式

    JavaScript設(shè)計(jì)模式發(fā)布訂閱模式

    這篇文章主要介紹了JavaScript設(shè)計(jì)模式發(fā)布訂閱模式,發(fā)布訂閱設(shè)計(jì)模式是和觀察者設(shè)計(jì)模式基本上相同,但是他們兩個(gè)設(shè)計(jì)模式不同的是發(fā)布訂閱者擁有一個(gè)事件處理中心而觀察者并沒有
    2022-06-06
  • JavaScript中遍歷的十種方法總結(jié)

    JavaScript中遍歷的十種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于JavaScript中遍歷的十種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • js 博客內(nèi)容進(jìn)度插件詳解

    js 博客內(nèi)容進(jìn)度插件詳解

    本篇文章主要介紹了博客內(nèi)容進(jìn)度插件的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • js如何將輸入的文字部分獲取拼音首字母

    js如何將輸入的文字部分獲取拼音首字母

    這篇文章主要介紹了js如何將輸入的文字部分獲取拼音首字母問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評(píng)論