javascript中字串的應用(程式碼)
字串在javascript中是非常重要的知識點之一,這篇文章給大家列出了很多的例子,可以看一看,鍛鍊自己的能力。
讓自己更熟悉各個api的使用。以下是javascript版本的leetcode題目(字串入門題組)解法。
1.反轉字串
說明
寫一個函數,其作用是將輸入的字串反轉過來。
範例1:
输入: "hello" 输出: "olleh"
範例2:
输入: "A man, a plan, a canal: Panama" 输出: "amanaP :lanac a ,nalp a ,nam A"
實作
/** * @param {string} s * @return {string} */ var reverseString = function(s) { return s.split('').reverse().join('') };
點評
常見寫法,轉為數組,翻轉,變回來。
2.顛倒整數
說明
給定一個 32 位元有符號整數,將整數中的數字反轉。
注意:
假設我們的環境只能儲存 32 位元有符號整數,其數值範圍是 [−231, 231 − 1]。根據這個假設,如果反轉後的整數溢出,則傳回 0。
範例1:
输入: 123 输出: 321
範例2:
输入: -123 输出: -321
範例3:
输入: 120 输出: 21
實作
/** * @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 } };
點評
#看上去跟第一題沒什麼差別。轉為字串,翻轉,變成數值。裡面需要處理的就是越界以及正負數的問題
3.字串中的第一個唯一字元
說明
給定一個字串,找到它的第一個不重複的字符,並返回它的索引。如果不存在,則傳回 -1。
注意:
您可以假定該字串只包含小寫字母。
案例1:
s = "leetcode" 返回 0.
案例2:
s = "loveleetcode", 返回 2.
實作
/** * @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 };
點評
解法不是很好,會導致遍歷很多次,想法就是前後找,如果index
一致就證明沒重複
最快的方法當然是把目前的存在map
裡面,然後計數,再遍歷一遍map
就ok。
4.有效的字母異位詞
說明
給定兩個字串s 和t ,寫一個函數來判斷t 是否是s 的一個字母異位詞。
說明:
你可以假設字串只包含小寫字母。
進階:
如果輸入字串包含 unicode 字元怎麼辦?你能否調整你的解法來應對這種情況?
範例1:
输入: s = "anagram", t = "nagaram" 输出: true
範例2:
输入: s = "rat", t = "car" 输出: false
方案
/** * @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<s.length;i++){ if(!_sArr[s[i]]) _sArr[s[i]] = 0; _sArr[s[i]]++ if(!_tArr[t[i]]) _tArr[t[i]] = 0; _tArr[t[i]]++ } for(var i in _sArr){ if(_sArr[i]!=_tArr[i]){ return false; } } return true; };
點評
這個就是透過計數,然後判斷是否元素都一樣多。
5.驗證回文字串
說明
給定一個字串,驗證它是否是回文串,只考慮字母和數字字符,可以忽略字母的大小寫。
說明:
本題中,我們將空字串定義為有效的回文字串。
範例1:
输入: "A man, a plan, a canal: Panama" 输出: true
範例2:
输入: "race a car" 输出: false
方案
/** * @param {string} s * @return {boolean} */ var isPalindrome = function(s) { var _s = s.replace(/[^a-z0-9]/gi,'').toLowerCase(); return _s.split('').reverse().join('') == _s };
點評
透過正規把不要的字元都刪掉,轉化為小寫,翻轉比對。
6.字串轉整數(atoi)
說明
實作 atoi,將字串轉為整數。
在找到第一個非空字元之前,需要移除字串中的空格字元。如果第一個非空字元是正號或負號,選取該符號,並將其與後面盡可能多的連續的數字組合起來,這部分字元即為整數的值。如果第一個非空字元是數字,則直接將其與之後連續的數字字元組合起來,形成整數。
字串可以在形成整數的字元後麵包括多餘的字符,這些字符可以被忽略,它們對於函數沒有影響。
當字串中的第一個非空字元序列不是個有效的整數;或字串為空;或字串僅包含空白字元時,則不進行轉換。
如果函數不能執行有效的轉換,則回傳 0。
說明:
假設我們的環境只能儲存 32 位元有符號整數,其數值範圍為 [−231, 231 − 1]。如果數值超過可表示的範圍,則傳回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。
範例1:
输入: "42" 输出: 42
範例2:
输入: " -42" 输出: -42 解释: 第一个非空白字符为 '-', 它是一个负号。 我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。
範例3:
输入: "4193 with words" 输出: 4193 解释: 转换截止于数字 '3' ,因为它的下一个字符不为数字。
範例4:
输入: "words and 987" 输出: 0 解释: 第一个非空字符是 'w', 但它不是数字或正、负号。 因此无法执行有效的转换。
範例5
输入: "-91283472332" 输出: -2147483648 解释: 数字 "-91283472332" 超过 32 位有符号整数范围。 因此返回 INT_MIN (−231) 。
方案
/** * @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 } };
點評
這個沒什麼好說的,判斷邊界,然後parseInt
當 needle 是空字串時,我們該回傳什麼值呢?這是一個在面試中很好的問題。
對於本題而言,當 needle 是空字串時我們應當回傳 0 。這與C語言的 strstr() 以及 Java的 indexOf() 定義相符。
输入: haystack = "hello", needle = "ll"
输出: 2
登入後複製
範例2:输入: haystack = "hello", needle = "ll" 输出: 2
输入: haystack = "aaaaa", needle = "bba"
输出: -1
登入後複製
方案输入: haystack = "aaaaa", needle = "bba" 输出: -1
/**
* @param {string} haystack
* @param {string} needle
* @return {number}
*/
var strStr = function(haystack, needle) {
return haystack.indexOf(needle)
};
登入後複製
點評也沒什麼說的吧,正規或/** * @param {string} haystack * @param {string} needle * @return {number} */ var strStr = function(haystack, needle) { return haystack.indexOf(needle) };
indexOf都可以實現
1. 1 2. 11 3. 21 4. 1211 5. 111221
1 被读作 "one 1" ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"), 即 21。
21 被读作 "one 2", "one 1" ("一个二" , "一个一") , 即 1211。
给定一个正整数 n ,输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例 1:
输入: 1 输出: "1"
示例 2:
输入: 4 输出: "1211"
方案
/** * @param {number} n * @return {string} */ var countAndSay = function(n) { var _str = '1'; for(var i=1;i<n;i++){ _str = _str.match(/1+|2+|3+|4+|5+|6+|7+|8+|9+/g).map(v=>''+v.length+v[0]).join(''); } return _str };
点评
我的想法是选出连续的同字符,然后把该字符串变成长度加字符,再拼回去
9. 最长公共前缀
说明
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
说明:
所有输入只包含小写字母 a-z 。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
方案
/** * @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<strs.length;i++){ // if(_arr.length == 0) break; while(_arr.length){ var _index = strs[i].indexOf(_arr[0]); if(_index != 0){ _arr.shift() }else{ break; } } } return _arr[0] || '' };
点评
想法是做一个公共前缀数组,遍历,如果有不满足的,就操作这个前缀数组,直到最后,剩下的就是满足的。取最大的一个。
相关推荐:
以上是javascript中字串的應用(程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數
