站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        es6怎么實(shí)現(xiàn)字符串反轉(zhuǎn)

        實(shí)現(xiàn)方法:1、用split、reverse和join函數(shù),語法“str.split('').reverse().join('');”;2、用遞減的for循環(huán),語法“for(i=字符串長度-1;i>=0;i–){nS+=str[i];}”;3、用遞歸,語法“function f(s){return s===''?'':f(s.substr(1))+s.charAt(0)}”。

        es6怎么實(shí)現(xiàn)字符串反轉(zhuǎn)

        前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
        Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用

        本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。

        反轉(zhuǎn)字符串 是技術(shù)面試中最常問到的 JavaScript 問題之一。 面試官可能會要求你使用不同的編碼方式來反轉(zhuǎn)字符串,或者他們可能會要求你不使用內(nèi)置方法來反轉(zhuǎn)字符串,甚至?xí)竽闶褂眠f歸來反轉(zhuǎn)字符串。

        可能有數(shù)十種不同的方法可以執(zhí)行此操作,但內(nèi)置reverse方法除外,因?yàn)?JavaScript 的 String 對象上沒有此方法

        以下是我解決 JavaScript 反轉(zhuǎn)字符串問題的三種最有趣的方法。

        算法要求

        反轉(zhuǎn)提供的字符串.
        你可能需要將字符串轉(zhuǎn)換為數(shù)組,然后才能將其反轉(zhuǎn).
        你的結(jié)果必須是字符串.

        function reverseString(str) {     return str; } reverseString('hello');
        登錄后復(fù)制

        提供測試用例

        • reverseString(“hello”) 應(yīng)該返回 “olleh”
        • reverseString(“Howdy”) 應(yīng)該返回 “ydwoH”
        • reverseString(“Greetings from Earth”) 應(yīng)該返回 ”htraE morf sgniteerG”

        1. 使用內(nèi)置方法反轉(zhuǎn)字符串

        對于此解決方案,我們將使用三種方法:String.prototype.split() 方法,Array.prototype.reverse() 方法和 Array.prototype.join() 方法。

        • split() 方法使用指定的分隔符字符串將一個 String 對象分割成子字符串?dāng)?shù)組,以一個指定的分割字串來決定每個拆分的位置
        • reverse() 方法將數(shù)組中元素的位置顛倒,并返回該數(shù)組。數(shù)組的第一個元素會變成最后一個,數(shù)組的最后一個元素變成第一個。該方法會改變原數(shù)組
        • join() 方法將一個數(shù)組(或一個類數(shù)組對象)的所有元素連接成一個字符串并返回這個字符串。如果數(shù)組只有一個項(xiàng)目,那么將返回該項(xiàng)目而不使用分隔符

        function reverseString(str) {     // Step 1. 使用 split()方法返回一個新數(shù)組     var splitString = str.split(''); // var splitString = "hello".split("");     // ["h", "e", "l", "l", "o"]      // Step 2.使用 reverse()方法 翻轉(zhuǎn)數(shù)組     var reverseArray = splitString.reverse(); // var reverseArray = ["h", "e", "l", "l", "o"].reverse();     // ["o", "l", "l", "e", "h"]      // Step 3.使用 join()方法 組合所有的數(shù)組元素,從而變成一個新字符串     var joinArray = reverseArray.join(''); // var joinArray = ["o", "l", "l", "e", "h"].join("");     // "olleh"      //Step 4. 返回翻轉(zhuǎn)后的字符串     return joinArray; // "olleh" }  reverseString('hello');
        登錄后復(fù)制

        三個方法組合形成鏈?zhǔn)秸{(diào)用:

        function reverseString(str) {     return str.split('').reverse().join(''); } reverseString('hello');
        登錄后復(fù)制

        2. 用遞減的 for 循環(huán)反轉(zhuǎn)字符串

        function reverseString(str) {     // Step 1. 創(chuàng)建一個空字符串,用來存儲后面新創(chuàng)建的字符串     var newString = '';      // Step 2.創(chuàng)建for循環(huán)     /* 循環(huán)的起點(diǎn)是(str.length-1),它對應(yīng)于         字符串的最后一個字符“o”         只要i大于或等于0,循環(huán)就會繼續(xù)         每次迭代后遞減i */     for (var i = str.length - 1; i >= 0; i--) {         newString += str[i]; // or newString = newString + str[i];     }     /* "hello"的length等于 5         每次循環(huán)的公式: i = str.length - 1 and newString = newString + str[i]         第一次循環(huán):   i = 5 - 1 = 4,         newString = "" + "o" = "o"         第二次循環(huán):   i = 4 - 1 = 3,         newString = "o" + "l" = "ol"         第三次循環(huán):   i = 3 - 1 = 2,         newString = "ol" + "l" = "oll"         第四次循環(huán):   i = 2 - 1 = 1,         newString = "oll" + "e" = "olle"         第五次循環(huán):   i = 1 - 1 = 0,         newString = "olle" + "h" = "olleh"     結(jié)束for循環(huán)*/      // Step 3. 返回已翻轉(zhuǎn)的字符串     return newString; // "olleh" }  reverseString('hello');
        登錄后復(fù)制

        刪除注釋:

        function reverseString(str) {     var newString = '';     for (var i = str.length - 1; i >= 0; i--) {         newString += str[i];     }     return newString; } reverseString('hello');
        登錄后復(fù)制

        3. 用遞歸反轉(zhuǎn)字符串

        對于此解決方案,我們將使用兩種方法:String.prototype.substr() 方法和 String.prototype.charAt() 方法

        • substr() 方法返回一個字符串中從指定位置開始到指定字符數(shù)的字符.

        譯者注:

        盡管 String.prototype.substr(……) 沒有嚴(yán)格被廢棄 (as in "removed from the Web standards"), 但它被認(rèn)作是遺留的函數(shù)并且可以的話應(yīng)該避免使用。它并非 JavaScript 核心語言的一部分,未來將可能會被移除掉。如果可以的話,使用 substring() 替代它.

        'hello'.substr(1); // "ello"
        登錄后復(fù)制

        • charAt() 方法從一個字符串中返回指定的字符.

        'hello'.charAt(0); // "h"
        登錄后復(fù)制

        遞歸的深度等于 String 的長度。 當(dāng) String 很長且堆棧大小是主要問題的時(shí)候,代碼運(yùn)行非常慢。所以此方案不是最佳解決方案

        function reverseString(str) {   if (str === "") // 如果傳入空字符串,則直接返回它     return "";   else     return reverseString(str.substr(1)) + str.charAt(0); /* 遞歸方法的第一部分 你需要記住不會只有一次回調(diào),會存在多次嵌套回調(diào) 每次回調(diào)的公式: str === "?"                         reverseString(str.subst(1))     + str.charAt(0) 1st call – reverseString("Hello")   will return   reverseString("ello")           + "h" 2nd call – reverseString("ello")    will return   reverseString("llo")            + "e" 3rd call – reverseString("llo")     will return   reverseString("lo")             + "l" 4th call – reverseString("lo")      will return   reverseString("o")              + "l" 5th call – reverseString("o")       will return   reverseString("")               + "o" 遞歸方法的第二部分 該方法達(dá)一旦到if條件,嵌套最深的調(diào)用會立即返回 */
        登錄后復(fù)制

        刪除注釋:

        function reverseString(str) {     if (str === '') return '';     else return reverseString(str.substr(1)) + str.charAt(0); } reverseString('hello');
        登錄后復(fù)制

        使用三元表達(dá)式:

        function reverseString(str) {     return str === '' ? '' : reverseString(str.substr(1)) + str.charAt(0); } reverseString('hello');
        登錄后復(fù)制

        JavaScript 字符串反轉(zhuǎn) 是一種小型且簡單的算法,在電話技術(shù)篩查或技術(shù)面試中都可能被問到。 你可以采用最簡單的方式解決此問題,也可以采用遞歸或更復(fù)雜的解決方案來解決。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 久久国产精品-国产精品| 国产精品亚洲一区二区在线观看| 日本精品久久久久中文字幕8| 精品国产_亚洲人成在线高清| 欧美久久亚洲精品| 99久久精品无码一区二区毛片 | 日韩精品成人亚洲专区| 久久精品国产半推半就| 久久精品人人槡人妻人人玩AV| 欧美人与动牲交a欧美精品| 国产精品欧美久久久久无广告 | 老司机国内精品久久久久| 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 精品人妻中文av一区二区三区| 亚洲国产精品成人一区| 美女岳肉太深了使劲国产精品亚洲专一区二区三区 | 国产三级精品三级在专区| 99riav国产精品| 亚洲国产精品一区二区久久| 国产精品99久久久久久人| 国产美女久久精品香蕉69| 久久久久无码精品国产| 亚洲Av永久无码精品三区在线 | 无码人妻精品一区二区蜜桃AV| 精品国产高清在线拍| 最新国产精品拍自在线观看| 久久久精品无码专区不卡| 精品久久人人妻人人做精品| 国产精品成人h片在线| 欧美久久精品一级c片片| 精品一区二区三区在线视频| 久久99精品国产| 亚洲精品福利视频| 国产av无码专区亚洲国产精品| 999国产精品色在线播放| 国产福利精品在线观看| 国产精品久久久久久久午夜片| 国产精品最新国产精品第十页| 久久国产精品免费| 无码人妻精品一区二| 最新国产在线精品观看|