摘要:說明本題中,我們將空字符串定義為有效的回文串。說明當(dāng)是空字符串時(shí),我們應(yīng)當(dāng)返回什么值呢這是一個(gè)在面試中很好的問題。對(duì)于本題而言,當(dāng)是空字符串時(shí)我們應(yīng)當(dāng)返回。注意整數(shù)順序?qū)⒈硎緸橐粋€(gè)字符串。如果不存在公共前綴,返回空字符串。
鍛煉自己的能力,讓自己更加熟悉各個(gè)api的使用。
下面是javascript版本的leetcode題目(字符串入門題組)解法。leetCode地址。
編寫一個(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。
輸入: 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。
注意:
您可以假定該字符串只包含小寫字母。
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。
給定兩個(gè)字符串 s 和 t ,編寫一個(gè)函數(shù)來判斷 t 是否是 s 的一個(gè)字母異位詞。
說明:
你可以假設(shè)字符串只包含小寫字母。
進(jìn)階:
如果輸入字符串包含 unicode 字符怎么辦?你能否調(diào)整你的解法來應(yīng)對(duì)這種情況?
輸入: 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。
說明:
示例 示例 1:
假設(shè)我們的環(huán)境只能存儲(chǔ) 32 位有符號(hào)整數(shù),其數(shù)值范圍是 [?231, 231 ? 1]。如果數(shù)值超過可表示的范圍,則返回 INT_MAX (231 ? 1) 或 INT_MIN (?231) 。輸入: "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。
說明:
示例 示例 1:
當(dāng) needle 是空字符串時(shí),我們應(yīng)當(dāng)返回什么值呢?這是一個(gè)在面試中很好的問題。
對(duì)于本題而言,當(dāng) needle 是空字符串時(shí)我們應(yīng)當(dāng)返回 0 。這與C語言的 strstr() 以及 Java的 indexOf() 定義相符。輸入: 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. 1112211 被讀作 "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)。
示例 示例 1:
注意:整數(shù)順序?qū)⒈硎緸橐粋€(gè)字符串。輸入: 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點(diǎn)評(píng)""+v.length+v[0]).join(""); } return _str }; 我的想法是選出連續(xù)的同字符,然后把該字符串變成長度加字符,再拼回去
9. 最長公共前綴 說明編寫一個(gè)函數(shù)來查找字符串?dāng)?shù)組中的最長公共前綴。
如果不存在公共前綴,返回空字符串 ""。說明:
示例 示例 1:
所有輸入只包含小寫字母 a-z 。輸入: ["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
摘要:第五題對(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ù)上...
摘要:題解首先,容易觀察到將轉(zhuǎn)到,,,,狀態(tài),并將進(jìn)行與上相同操作后得到了再將轉(zhuǎn)至,,,,所需要的步數(shù)即為答案。 E.Edward Gaming, the Champio...
摘要:微信公眾號(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 一 目錄 不...
摘要:題目鏈接題目分析給定兩個(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è)字符串比另一...
摘要:由于是按難易度排序的,因此本題是第一題。先把問題簡化為中只有一個(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 中出...
閱讀 430·2019-08-29 12:44
閱讀 3008·2019-08-26 17:49
閱讀 2425·2019-08-26 13:40
閱讀 1183·2019-08-26 13:39
閱讀 3660·2019-08-26 11:59
閱讀 1823·2019-08-26 10:59
閱讀 2461·2019-08-23 18:33
閱讀 2695·2019-08-23 18:30