摘要:重復(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了,pop、shift、 unshift、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("")) 字符串中的第一個(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ù)組的split、reverse 、join、map方法,原理:就是把字符串變成數(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
摘要:說(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...
摘要:的最大公約數(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)該具有線...
摘要:遍歷路徑,找到所有可以到達(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)。 ...
文章目錄 一、題目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...
摘要:題目即求最長(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...
閱讀 2727·2021-11-22 15:22
閱讀 1631·2021-11-22 14:56
閱讀 3616·2021-09-22 15:12
閱讀 2403·2021-09-02 15:41
閱讀 2122·2021-08-27 16:26
閱讀 1113·2019-08-30 15:55
閱讀 2138·2019-08-29 17:30
閱讀 665·2019-08-29 16:26