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

資訊專欄INFORMATION COLUMN

JavaScript數據結構與算法-String-(leetcode原題)

KoreyLee / 1497人閱讀

摘要:重復出現的子串要計算它們出現的次數。示例輸入輸出解釋有個子串,,,,它們具有相同數量的連續和。注意在到之間。以此類推,剃掉原字符串的第一個字符后再調用一次方法,直到原字符串只剩下個字符,返回數組的長度,即為題解。

博客原文地址:https://finget.github.io/2019...
反轉整數
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 1:

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

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

輸入: 120
輸出: 21
注意:

假設我們的環境只能存儲得下 32 位的有符號整數,則其數值范圍為 [?231,  231 ? 1]。請根據這個假設,如果反轉后整數溢出那么就返回 0。

思路:數字變字符串再變數組,這個主要就是運用的數組的常用api了,pop、shiftunshift、join。

/**
 * @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(""))
字符串中的第一個唯一字符
給定一個字符串,找到它的第一個不重復的字符,并返回它的索引。如果不存在,則返回 -1。

案例:

s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.
 

注意事項:您可以假定該字符串只包含小寫字母。

思路:for of循環,找出字符出現的第一個位置和最后一個位置,如果兩個值相等,則返回

/**
 * @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
};
反轉字符串中的單詞
給定一個字符串,你需要反轉字符串中每個單詞的字符順序,同時仍保留空格和單詞的初始順序。
示例 1:
輸入: "Let"s take LeetCode contest"
輸出: "s"teL ekat edoCteeL tsetnoc" 
注意:在字符串中,每個單詞由單個空格分隔,并且字符串中不會有任何額外的空格。

主要就是用到了數組的splitreverse 、join、map方法,原理:就是把字符串變成數組,再利用數組自帶的反轉方法,最后再變成字符串返回。

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

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

示例 1 :
輸入: "00110011"
輸出: 6
解釋: 有6個子串具有相同數量的連續1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。
請注意,一些重復出現的子串要計算它們出現的次數。
另外,“00110011”不是有效的子串,因為所有的0(和1)沒有組合在一起。

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

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

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

export default (str) => {
  // 建立數據結構,堆棧,保存數據
  let r = []
  // 給定任意子輸入都返回第一個符合條件的子串
  let match = (str) => {
    // 使用正則表達式獲取字符串開頭的字符
    let j = str.match(/^(0+|1+)/)[0]
    // 利用“異或”運算將字符反轉并復制相同個數
    let o = (j[0] ^ 1).toString().repeat(j.length)
    // 合并上面兩個字符串,創建正則表達式
    let reg = new RegExp(`^(${j}${o})`)
    // 與傳入的字符串進行比對,返回第一個比對成功的子串
    if (reg.test(str)) {
      return RegExp.$1
    } else {
      return ""
    }
  }
  // 通過for循環控制程序運行的流程
  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
}
有效的字母異位詞
給定兩個字符串 s 和 t ,編寫一個函數來判斷 t 是否是 s 的一個字母異位詞。

示例 1:

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

輸入: s = "rat", t = "car"
輸出: false
說明:
你可以假設字符串只包含小寫字母。

進階:
如果輸入字符串包含 unicode 字符怎么辦?你能否調整你的解法來應對這種情況?

思路:如果兩個字符串包含的字母相同,那么排序的順序也應該一樣,基于此做循環判斷。

/**
 * @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
最后

創建了一個前端學習交流群,感興趣的朋友,一起來嗨呀!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/109657.html

相關文章

  • JavaScript數據結構算法-Sort-(leetcode原題)

    摘要:說明你可以假設數組中所有元素都是非負整數,且數值在位有符號整數范圍內。提示按奇偶排序數組給定一個非負整數數組,中一半整數是奇數,一半整數是偶數。對數組進行排序,以便當為奇數時,也是奇數當為偶數時,也是偶數。 原博客地址:https://finget.github.io/2019... 排序 showImg(https://segmentfault.com/img/remote/146...

    Hanks10100 評論0 收藏0
  • JavaScript數據結構算法-Array-(leetcode原題)

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

    joy968 評論0 收藏0
  • 算法】劍指 Offer II 110. 所有路徑|797. 所有可能的路徑(多語言實現)

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

    wangdai 評論0 收藏0
  • ?算法入門?《二叉樹 - 二叉搜索樹》簡單05 —— LeetCode 897. 遞增順序搜索樹

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

    Soarkey 評論0 收藏0
  • LeetCode——Longest Palindromic Substring

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

    shevy 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<