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

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript數(shù)據(jù)結(jié)構(gòu)與算法-String-(leetcode原題)

KoreyLee / 1490人閱讀

摘要:重復(fù)出現(xiàn)的子串要計(jì)算它們出現(xiàn)的次數(shù)。示例輸入輸出解釋有個(gè)子串,,,,它們具有相同數(shù)量的連續(xù)和。注意在到之間。以此類(lèi)推,剃掉原字符串的第一個(gè)字符后再調(diào)用一次方法,直到原字符串只剩下個(gè)字符,返回?cái)?shù)組的長(zhǎng)度,即為題解。

博客原文地址:https://finget.github.io/2019...
反轉(zhuǎn)整數(shù)
給出一個(gè) 32 位的有符號(hào)整數(shù),你需要將這個(gè)整數(shù)中每位上的數(shù)字進(jìn)行反轉(zhuǎn)。

示例 1:

輸入: 123
輸出: 321
 示例 2:

輸入: -123
輸出: -321
示例 3:

輸入: 120
輸出: 21
注意:

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

思路:數(shù)字變字符串再變數(shù)組,這個(gè)主要就是運(yùn)用的數(shù)組的常用api了,popshiftunshiftjoin

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
    let arr = (x + "").split("").reverse()
        let len = arr.length
        // 最大最小邊界
        let min = -(2**31)
        let max = (2**31) - 1
        if (arr[len - 1] == "-") {
            arr.pop()
            if (arr[0] == 0) {   
                arr.shift()
                arr.unshift("-")
                let res = Number(arr.join(""))
                return res>=min&&res<=max?res:0
            } else {
                arr.unshift("-")
                let res = Number(arr.join(""))
                return res>=min&&res<=max?res:0
            }

        } else if (arr[0] == "0" && arr[len - 1] != "-") {
            arr.shift()
            let res = Number(arr.join(""))
            return res>min&&resmin&&Number(arr.join(""))
字符串中的第一個(gè)唯一字符
給定一個(gè)字符串,找到它的第一個(gè)不重復(fù)的字符,并返回它的索引。如果不存在,則返回 -1。

案例:

s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.
 

注意事項(xiàng):您可以假定該字符串只包含小寫(xiě)字母。

思路:for of循環(huán),找出字符出現(xiàn)的第一個(gè)位置和最后一個(gè)位置,如果兩個(gè)值相等,則返回

/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function(s) {
    for (let v of s) {
        if (s.indexOf(v) === s.lastIndexOf(v)) return s.indexOf(v)
    }
    return -1
};
反轉(zhuǎn)字符串中的單詞
給定一個(gè)字符串,你需要反轉(zhuǎn)字符串中每個(gè)單詞的字符順序,同時(shí)仍保留空格和單詞的初始順序。
示例 1:
輸入: "Let"s take LeetCode contest"
輸出: "s"teL ekat edoCteeL tsetnoc" 
注意:在字符串中,每個(gè)單詞由單個(gè)空格分隔,并且字符串中不會(huì)有任何額外的空格。

主要就是用到了數(shù)組的splitreversejoinmap方法,原理:就是把字符串變成數(shù)組,再利用數(shù)組自帶的反轉(zhuǎn)方法,最后再變成字符串返回。

export default (str) => {
  // 1.先將字符串轉(zhuǎn)為數(shù)組
  let arr = str.split(" ")
  // 2.遍歷數(shù)組,反轉(zhuǎn)數(shù)組中的每一項(xiàng)
  let result = arr.map(item => {
    return item.split("").reverse().join("")
  })
  // 3.把新生成的數(shù)組轉(zhuǎn)成字符串,用空格分開(kāi),返回結(jié)果
  return result.join(" ")
}

// 合并寫(xiě)法
export default (str) => {
    return s.split(/s/g).map(item => {
        return item.split("").reverse().join("")
    }).join(" ")
}
計(jì)數(shù)二進(jìn)制子串
給定一個(gè)字符串 s,計(jì)算具有相同數(shù)量0和1的非空(連續(xù))子字符串的數(shù)量,并且這些子字符串中的所有0和所有1都是組合在一起的。
重復(fù)出現(xiàn)的子串要計(jì)算它們出現(xiàn)的次數(shù)。

示例 1 :
輸入: "00110011"
輸出: 6
解釋: 有6個(gè)子串具有相同數(shù)量的連續(xù)1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。
請(qǐng)注意,一些重復(fù)出現(xiàn)的子串要計(jì)算它們出現(xiàn)的次數(shù)。
另外,“00110011”不是有效的子串,因?yàn)樗械?(和1)沒(méi)有組合在一起。

示例 2 :
輸入: "10101"
輸出: 4
解釋: 有4個(gè)子串:“10”,“01”,“10”,“01”,它們具有相同數(shù)量的連續(xù)1和0。

注意:
- s.length 在1到50,000之間。
- s 只包含“0”或“1”字符。

思路:使用一個(gè)for循環(huán),將字符串從第一個(gè)開(kāi)始傳入match函數(shù)中,在match函數(shù)中利用正則表達(dá)式獲取到字符串開(kāi)頭的字符(或是多個(gè)0或是多個(gè)1),再使用repeat方法,將開(kāi)頭獲取到的多個(gè)0或1利用異或運(yùn)算反轉(zhuǎn)重復(fù)相同次數(shù)(舉個(gè)例子:獲取到了‘00’,那么反轉(zhuǎn)之后就是‘11’),然后再建立一個(gè)正則表達(dá)式,將獲取到的字符和反轉(zhuǎn)后的字符拼接,使用test方法與傳入的字符串進(jìn)行比對(duì),返回第一個(gè)比對(duì)成功的字符串,保存到數(shù)組r中。以此類(lèi)推,剃掉原字符串的第一個(gè)字符后再調(diào)用一次match方法,直到原字符串只剩下1個(gè)字符,返回?cái)?shù)組r的長(zhǎng)度,即為題解。

export default (str) => {
  // 建立數(shù)據(jù)結(jié)構(gòu),堆棧,保存數(shù)據(jù)
  let r = []
  // 給定任意子輸入都返回第一個(gè)符合條件的子串
  let match = (str) => {
    // 使用正則表達(dá)式獲取字符串開(kāi)頭的字符
    let j = str.match(/^(0+|1+)/)[0]
    // 利用“異或”運(yùn)算將字符反轉(zhuǎn)并復(fù)制相同個(gè)數(shù)
    let o = (j[0] ^ 1).toString().repeat(j.length)
    // 合并上面兩個(gè)字符串,創(chuàng)建正則表達(dá)式
    let reg = new RegExp(`^(${j}${o})`)
    // 與傳入的字符串進(jìn)行比對(duì),返回第一個(gè)比對(duì)成功的子串
    if (reg.test(str)) {
      return RegExp.$1
    } else {
      return ""
    }
  }
  // 通過(guò)for循環(huán)控制程序運(yùn)行的流程
  for (let i = 0, len = str.length - 1; i < len; i++) {
    let sub = match(str.slice(i))
    if (sub) {
      r.push(sub)
    }
  }
  return r.length
}
有效的字母異位詞
給定兩個(gè)字符串 s 和 t ,編寫(xiě)一個(gè)函數(shù)來(lái)判斷 t 是否是 s 的一個(gè)字母異位詞。

示例 1:

輸入: s = "anagram", t = "nagaram"
輸出: true
示例 2:

輸入: s = "rat", t = "car"
輸出: false
說(shuō)明:
你可以假設(shè)字符串只包含小寫(xiě)字母。

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

思路:如果兩個(gè)字符串包含的字母相同,那么排序的順序也應(yīng)該一樣,基于此做循環(huán)判斷。

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
    let s1 = s.split("").sort()
    let t1 = t.split("").sort()
    if (s1.length != t1.length) {
        return false
    }
    for(let i = 0;i
最后

創(chuàng)建了一個(gè)前端學(xué)習(xí)交流群,感興趣的朋友,一起來(lái)嗨呀!

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

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

相關(guān)文章

  • JavaScript數(shù)據(jù)結(jié)構(gòu)算法-Sort-(leetcode原題)

    摘要:說(shuō)明你可以假設(shè)數(shù)組中所有元素都是非負(fù)整數(shù),且數(shù)值在位有符號(hào)整數(shù)范圍內(nèi)。提示按奇偶排序數(shù)組給定一個(gè)非負(fù)整數(shù)數(shù)組,中一半整數(shù)是奇數(shù),一半整數(shù)是偶數(shù)。對(duì)數(shù)組進(jìn)行排序,以便當(dāng)為奇數(shù)時(shí),也是奇數(shù)當(dāng)為偶數(shù)時(shí),也是偶數(shù)。 原博客地址:https://finget.github.io/2019... 排序 showImg(https://segmentfault.com/img/remote/146...

    Hanks10100 評(píng)論0 收藏0
  • JavaScript數(shù)據(jù)結(jié)構(gòu)算法-Array-(leetcode原題)

    摘要:的最大公約數(shù)是,記為,,。示例輸入輸出示例輸入輸出注意數(shù)組內(nèi)已種好的花不會(huì)違反種植規(guī)則。輸入的數(shù)組長(zhǎng)度范圍為。是非負(fù)整數(shù),且不會(huì)超過(guò)輸入數(shù)組的大小。 博客原文地址: https://finget.github.io/2019... 只出現(xiàn)一次的數(shù)字i 給定一個(gè)非空整數(shù)數(shù)組,除了某個(gè)元素只出現(xiàn)一次以外,其余每個(gè)元素均出現(xiàn)兩次。找出那個(gè)只出現(xiàn)了一次的元素。 說(shuō)明: 你的算法應(yīng)該具有線...

    joy968 評(píng)論0 收藏0
  • 算法】劍指 Offer II 110. 所有路徑|797. 所有可能的路徑(多語(yǔ)言實(shí)現(xiàn))

    摘要:遍歷路徑,找到所有可以到達(dá)終點(diǎn)節(jié)點(diǎn)的路徑就是結(jié)果。提示中說(shuō)保證輸入為有向無(wú)環(huán)圖,所以我們可以認(rèn)為節(jié)點(diǎn)間一定有著某種排列的順序,從頭到尾怎樣可以有最多的路徑呢,那就是在保證沒(méi)有環(huán)路的情況下,所有節(jié)點(diǎn)都盡可能多的連接著其他節(jié)點(diǎn)。 ...

    wangdai 評(píng)論0 收藏0
  • ?算法入門(mén)?《二叉樹(shù) - 二叉搜索樹(shù)》簡(jiǎn)單05 —— LeetCode 897. 遞增順序搜索樹(shù)

    文章目錄 一、題目1、題目描述2、基礎(chǔ)框架3、原題鏈接 二、解題報(bào)告1、思路分析2、時(shí)間復(fù)雜度3、代碼詳解 三、本題小知識(shí)四、加群須知 一、題目 1、題目描述 ??給你一棵二叉搜索樹(shù),請(qǐng)按 中序遍歷 將其重新排列為一棵遞增順序搜索樹(shù),使樹(shù)中最左邊的節(jié)點(diǎn)成為樹(shù)的根節(jié)點(diǎn),并且每個(gè)節(jié)點(diǎn)沒(méi)有左子節(jié)點(diǎn),只有一個(gè)右子節(jié)點(diǎn)。??樣例輸入: [5,3,6,2,4,null,8,1,null,null,nu...

    Soarkey 評(píng)論0 收藏0
  • LeetCode——Longest Palindromic Substring

    摘要:題目即求最長(zhǎng)回文子序列原題鏈接此篇博客僅為學(xué)習(xí)記錄我的解法及代碼暴力解決,用及進(jìn)行兩層遍歷循環(huán)中套一層循環(huán),用遍歷,求最長(zhǎng)回文序列字符串,同時(shí)用變量記錄最長(zhǎng)子序列這種寫(xiě)法很暴力,效率很低,一層循環(huán),一層循環(huán),回文序列對(duì)比一層,時(shí)間復(fù)雜度為辣 題目: Given a string s, find the longest palindromic substring in s. You ma...

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

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

0條評(píng)論

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