国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript-leetcode-字符串 題解

UnixAgain / 862人閱讀

摘要:說明本題中,我們將空字符串定義為有效的回文串。說明當(dāng)是空字符串時(shí),我們應(yīng)當(dāng)返回什么值呢這是一個(gè)在面試中很好的問題。對(duì)于本題而言,當(dāng)是空字符串時(shí)我們應(yīng)當(dāng)返回。注意整數(shù)順序?qū)⒈硎緸橐粋€(gè)字符串。如果不存在公共前綴,返回空字符串。

鍛煉自己的能力,讓自己更加熟悉各個(gè)api的使用。
下面是javascript版本的leetcode題目(字符串入門題組)解法。leetCode地址。

1.反轉(zhuǎn)字符串 說明

編寫一個(gè)函數(shù),其作用是將輸入的字符串反轉(zhuǎn)過來。

示例 示例1:
輸入: "hello"
輸出: "olleh"
示例 2:
輸入: "A man, a plan, a canal: Panama"
輸出: "amanaP :lanac a ,nalp a ,nam A"
實(shí)現(xiàn)
/**
 * @param {string} s
 * @return {string}
 */
var reverseString = function(s) {
    return s.split("").reverse().join("")
};
點(diǎn)評(píng)

常見寫法,轉(zhuǎn)為數(shù)組,翻轉(zhuǎn),變回來。

2.顛倒整數(shù) 說明

給定一個(gè) 32 位有符號(hào)整數(shù),將整數(shù)中的數(shù)字進(jìn)行反轉(zhuǎn)。

注意:
假設(shè)我們的環(huán)境只能存儲(chǔ) 32 位有符號(hào)整數(shù),其數(shù)值范圍是 [?231, 231 ? 1]。根據(jù)這個(gè)假設(shè),如果反轉(zhuǎn)后的整數(shù)溢出,則返回 0。

示例 示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
實(shí)現(xiàn)
/**
 * @param {number} x
 * @return {number}
 */
var _min = Math.pow(-2,31)
var _max = Math.pow(2,31)
var reverse = function(x) {
    var _num = null;
    if(x<0){
       _num =  Number("-"+(Math.abs(x)+"").split("").reverse().join(""))
    }else{
       _num =  Number(((x)+"").split("").reverse().join(""))
    }
    if(_num>_max || _num<_min){
        return 0;   
    }else{
        return _num
    }
};
點(diǎn)評(píng)

看上去和第一題沒什么區(qū)別。轉(zhuǎn)為字符串,翻轉(zhuǎn),變成數(shù)值。里面需要處理的就是越界以及正負(fù)數(shù)的問題

3.字符串中的第一個(gè)唯一字符 說明

給定一個(gè)字符串,找到它的第一個(gè)不重復(fù)的字符,并返回它的索引。如果不存在,則返回 -1。
注意:
您可以假定該字符串只包含小寫字母。

示例 示例1:
s = "leetcode"
返回 0.
示例2:
s = "loveleetcode",
返回 2.
實(shí)現(xiàn)
/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function(s) {
    for(var i = 0 ; i < s.length;i++){
        if(s.indexOf(s[i]) == s.lastIndexOf(s[i])){
           return i
        }
    }
    return -1
};
點(diǎn)評(píng)

解法不是很好,會(huì)導(dǎo)致遍歷很多次,想法就是前后找,如果index一致就證明沒重復(fù)
最快的方法當(dāng)然是把當(dāng)前的存在map里面,然后計(jì)數(shù),再遍歷一遍map就ok。

4.有效的字母異位詞 說明

給定兩個(gè)字符串 s 和 t ,編寫一個(gè)函數(shù)來判斷 t 是否是 s 的一個(gè)字母異位詞。

說明:
你可以假設(shè)字符串只包含小寫字母。

進(jìn)階:
如果輸入字符串包含 unicode 字符怎么辦?你能否調(diào)整你的解法來應(yīng)對(duì)這種情況?

示例 示例 1:
輸入: s = "anagram", t = "nagaram"
輸出: true
示例 2:
輸入: s = "rat", t = "car"
輸出: false
實(shí)現(xiàn)
/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
    var _sArr = {};
    var _tArr = {};
    if(s.length != t.length) return false;
    for(var i = 0;i
點(diǎn)評(píng)

這個(gè)就是通過計(jì)數(shù),然后判斷是否元素都一樣多。

5.驗(yàn)證回文字符串 說明

給定一個(gè)字符串,驗(yàn)證它是否是回文串,只考慮字母和數(shù)字字符,可以忽略字母的大小寫。

說明:
本題中,我們將空字符串定義為有效的回文串。

示例 示例 1:
輸入: "A man, a plan, a canal: Panama"
輸出: true
示例 2:
輸入: "race a car"
輸出: false
實(shí)現(xiàn)
/**
 * @param {string} s
 * @return {boolean}
 */
var isPalindrome = function(s) {
    var _s = s.replace(/[^a-z0-9]/gi,"").toLowerCase();
    return _s.split("").reverse().join("") == _s
};
點(diǎn)評(píng)

通過正則把不要的字符都刪掉,轉(zhuǎn)化為小寫,翻轉(zhuǎn)比對(duì)。

6.字符串轉(zhuǎn)整數(shù)(atoi) 說明

實(shí)現(xiàn) atoi,將字符串轉(zhuǎn)為整數(shù)。

在找到第一個(gè)非空字符之前,需要移除掉字符串中的空格字符。如果第一個(gè)非空字符是正號(hào)或負(fù)號(hào),選取該符號(hào),并將其與后面盡可能多的連續(xù)的數(shù)字組合起來,這部分字符即為整數(shù)的值。如果第一個(gè)非空字符是數(shù)字,則直接將其與之后連續(xù)的數(shù)字字符組合起來,形成整數(shù)。

字符串可以在形成整數(shù)的字符后面包括多余的字符,這些字符可以被忽略,它們對(duì)于函數(shù)沒有影響。

當(dāng)字符串中的第一個(gè)非空字符序列不是個(gè)有效的整數(shù);或字符串為空;或字符串僅包含空白字符時(shí),則不進(jìn)行轉(zhuǎn)換。

若函數(shù)不能執(zhí)行有效的轉(zhuǎn)換,返回 0。

說明:
假設(shè)我們的環(huán)境只能存儲(chǔ) 32 位有符號(hào)整數(shù),其數(shù)值范圍是 [?231, 231 ? 1]。如果數(shù)值超過可表示的范圍,則返回 INT_MAX (231 ? 1) 或 INT_MIN (?231) 。

示例 示例 1:
輸入: "42"
輸出: 42
示例 2:
輸入: "   -42"
輸出: -42
解釋: 第一個(gè)非空白字符為 "-", 它是一個(gè)負(fù)號(hào)。
     我們盡可能將負(fù)號(hào)與后面所有連續(xù)出現(xiàn)的數(shù)字組合起來,最后得到 -42 。
示例 3:
輸入: "4193 with words"
輸出: 4193
解釋: 轉(zhuǎn)換截止于數(shù)字 "3" ,因?yàn)樗南乱粋€(gè)字符不為數(shù)字。
示例 4:
輸入: "words and 987"
輸出: 0
解釋: 第一個(gè)非空字符是 "w", 但它不是數(shù)字或正、負(fù)號(hào)。
     因此無法執(zhí)行有效的轉(zhuǎn)換。
     
示例 5
輸入: "-91283472332"
輸出: -2147483648
解釋: 數(shù)字 "-91283472332" 超過 32 位有符號(hào)整數(shù)范圍。 
     因此返回 INT_MIN (?231) 。
實(shí)現(xiàn)
/**
 * @param {string} str
 * @return {number}
 */
var myAtoi = function(str) {
    var _num = parseInt(str) || 0
    if(_num < (Math.pow(-2,31))){
       return (Math.pow(-2,31))
    }else if(_num >= (Math.pow(2,31))){
       return (Math.pow(2,31)-1)
    }else{
        return _num
    }
};
點(diǎn)評(píng)

這個(gè)沒什么好說的,判斷邊界,然后parseInt

7.實(shí)現(xiàn)strStr() 說明

給定一個(gè) haystack 字符串和一個(gè) needle 字符串,在 haystack 字符串中找出 needle 字符串出現(xiàn)的第一個(gè)位置 (從0開始)。如果不存在,則返回 -1。

說明:
當(dāng) needle 是空字符串時(shí),我們應(yīng)當(dāng)返回什么值呢?這是一個(gè)在面試中很好的問題。
對(duì)于本題而言,當(dāng) needle 是空字符串時(shí)我們應(yīng)當(dāng)返回 0 。這與C語言的 strstr() 以及 Java的 indexOf() 定義相符。

示例 示例 1:
輸入: haystack = "hello", needle = "ll"
輸出: 2
示例 2:
輸入: haystack = "aaaaa", needle = "bba"
輸出: -1
實(shí)現(xiàn)
/**
 * @param {string} haystack
 * @param {string} needle
 * @return {number}
 */
var strStr = function(haystack, needle) {
    return haystack.indexOf(needle)
};
點(diǎn)評(píng)

也沒什么說的吧,正則或者indexOf都可以實(shí)現(xiàn)

8.數(shù)數(shù)并說 說明

報(bào)數(shù)序列是指一個(gè)整數(shù)序列,按照其中的整數(shù)的順序進(jìn)行報(bào)數(shù),得到下一個(gè)數(shù)。其前五項(xiàng)如下:

1.     1
2.     11
3.     21
4.     1211
5.     111221

1 被讀作 "one 1" ("一個(gè)一") , 即 11。
11 被讀作 "two 1s" ("兩個(gè)一"), 即 21。
21 被讀作 "one 2", "one 1" ("一個(gè)二" , "一個(gè)一") , 即 1211。

給定一個(gè)正整數(shù) n ,輸出報(bào)數(shù)序列的第 n 項(xiàng)。
注意:整數(shù)順序?qū)⒈硎緸橐粋€(gè)字符串。

示例 示例 1:
輸入: 1
輸出: "1"
示例 2:
輸入: 4
輸出: "1211"
實(shí)現(xiàn)
/**
 * @param {number} n
 * @return {string}
 */
var countAndSay = function(n) {
    var _str = "1";
    for(var i=1;i""+v.length+v[0]).join("");
    }
    return _str
};
點(diǎn)評(píng)

我的想法是選出連續(xù)的同字符,然后把該字符串變成長度加字符,再拼回去

9. 最長公共前綴 說明

編寫一個(gè)函數(shù)來查找字符串?dāng)?shù)組中的最長公共前綴。
如果不存在公共前綴,返回空字符串 ""。

說明:
所有輸入只包含小寫字母 a-z 。

示例 示例 1:
輸入: ["flower","flow","flight"]
輸出: "fl"
示例 2:
輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。
實(shí)現(xiàn)
/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    var _arr = (strs[0]||"").split("").map((v,i)=>strs[0].slice(0,i+1)).reverse();
    for(var i = 1;i
點(diǎn)評(píng)

想法是做一個(gè)公共前綴數(shù)組,遍歷,如果有不滿足的,就操作這個(gè)前綴數(shù)組,直到最后,剩下的就是滿足的。取最大的一個(gè)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/97535.html

相關(guān)文章

  • 小李飛刀:做題第十一彈!

    摘要:第五題對(duì)稱二叉樹難度簡單給定一個(gè)二叉樹,檢查它是否是鏡像對(duì)稱的。第十六題最大連續(xù)的個(gè)數(shù)難度簡單給定一個(gè)二進(jìn)制數(shù)組,計(jì)算其中最大連續(xù)的個(gè)數(shù)。第十八題平方數(shù)之和難度簡單給定一個(gè)非負(fù)整數(shù),你要判斷是否存在兩個(gè)整數(shù)和,使得。 寫在前面 最近忙著調(diào)教新裝備,沒有及時(shí)的寫題解,但是沒有在偷懶沒刷題喔~來認(rèn)真整理下最近做的題目~ 之前考慮按tag來刷題,后來收到了推薦的leetcode題解,就根據(jù)上...

    ytwman 評(píng)論0 收藏0
  • 2021/11/21 ICPC沈陽站個(gè)人題解B,E,F,J(附賽時(shí)記錄)

    摘要:題解首先,容易觀察到將轉(zhuǎn)到,,,,狀態(tài),并將進(jìn)行與上相同操作后得到了再將轉(zhuǎn)至,,,,所需要的步數(shù)即為答案。 E.Edward Gaming, the Champio...

    Cristic 評(píng)論0 收藏0
  • LeetCode 攻略 - 2019 年 7 月上半月匯總(55 題攻略)

    摘要:微信公眾號(hào)記錄截圖記錄截圖目前關(guān)于這塊算法與數(shù)據(jù)結(jié)構(gòu)的安排前。已攻略返回目錄目前已攻略篇文章。會(huì)根據(jù)題解以及留言內(nèi)容,進(jìn)行補(bǔ)充,并添加上提供題解的小伙伴的昵稱和地址。本許可協(xié)議授權(quán)之外的使用權(quán)限可以從處獲得。 Create by jsliang on 2019-07-15 11:54:45 Recently revised in 2019-07-15 15:25:25 一 目錄 不...

    warmcheng 評(píng)論0 收藏0
  • Leetcode PHP題解--D73 389. Find the Difference

    摘要:題目鏈接題目分析給定兩個(gè)字符串,其中一個(gè)字符串比另一個(gè)字符串在隨機(jī)位置多一個(gè)字符。思路用計(jì)算字符串中字符出現(xiàn)的次數(shù),對(duì)比兩個(gè)字符串的字符出現(xiàn)次數(shù)。計(jì)算差集,返回差異部分即可。最終代碼若覺得本文章對(duì)你有用,歡迎用愛發(fā)電資助。 D73 389. Find the Difference 題目鏈接 389. Find the Difference 題目分析 給定兩個(gè)字符串,其中一個(gè)字符串比另一...

    widuu 評(píng)論0 收藏0
  • Leetcode PHP題解--D1 771. Jewels and Stones

    摘要:由于是按難易度排序的,因此本題是第一題。先把問題簡化為中只有一個(gè)字符的情形,因?yàn)樽址梢钥醋魇且粋€(gè)字符數(shù)組。這個(gè)函數(shù)的作用就是,根據(jù)閉包函數(shù),過濾數(shù)組元素。要注意是字符串,需要先轉(zhuǎn)換成數(shù)組才行。 771. Jewels and Stones 由于是按難易度排序的,因此本題是第一題。 題目鏈接 771. Jewels and Stones 題目分析 從第二個(gè)參數(shù)S中找第一個(gè)參數(shù)J 中出...

    Bamboy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

UnixAgain

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<