Strings sind einer der wichtigsten Wissenspunkte in JavaScript. In diesem Artikel finden Sie viele Beispiele, mit denen Sie einen Blick darauf werfen und Ihre Fähigkeiten testen können.
Machen Sie sich mit der Verwendung der einzelnen APIs vertrauter. Im Folgenden finden Sie die Lösung für die leetcode-Frage (String-Entry-Fragengruppe) der Javascript-Version.
Schreiben Sie eine Funktion, die die Eingabezeichenfolge umkehrt.
输入: "hello" 输出: "olleh"
输入: "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('') };
Gemeinsame Schreibmethoden, in Array konvertieren, umdrehen, zurückwechseln.
Kehren Sie bei einer gegebenen 32-Bit-Ganzzahl die Ziffern in der Ganzzahl um.
Hinweis:
Angenommen, unsere Umgebung kann nur 32-Bit-Ganzzahlen mit Vorzeichen speichern, deren Wertebereich [−231, 231 − 1] ist. Unter dieser Annahme wird 0 zurückgegeben, wenn die umgekehrte Ganzzahl überläuft.
输入: 123 输出: 321
输入: -123 输出: -321
输入: 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 } };
Es sieht nicht anders aus als bei der ersten Frage. In einen String konvertieren, umdrehen und in einen numerischen Wert umwandeln. Was gelöst werden muss, ist das Problem von außerhalb der Grenzen liegenden positiven und negativen Zahlen
Gegeben a Zeichenfolge, finden Sie das erste sich nicht wiederholende Zeichen und geben Sie seinen Index zurück. Wenn es nicht existiert, wird -1 zurückgegeben.
Hinweis:
Sie können davon ausgehen, dass die Zeichenfolge nur Kleinbuchstaben enthält.
s = "leetcode" 返回 0.
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 };
Die Lösung ist nicht sehr gut und wird führen Bei vielen Durchlaufzeiten besteht die Idee darin, vorwärts und rückwärts zu suchen. Dies beweist, dass es keine Wiederholung gibt. Der schnellste Weg besteht natürlich darin, die aktuelle Zeit in index
zu speichern. dann zählen und dann
noch einmal durchqueren und es wird in Ordnung sein. map
map
4. Gültige Buchstabenanagramme
Hinweis:
Sie können davon ausgehen, dass die Zeichenfolge nur Kleinbuchstaben enthält.
Erweitert:
Beispiel 1:
输入: s = "anagram", t = "nagaram" 输出: true
输入: 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. Palindrom-Zeichenfolge überprüfen
Erklärung:
In dieser Frage definieren wir die leere Zeichenfolge als gültige Palindromzeichenfolge.
Beispiel 1:
输入: "A man, a plan, a canal: Panama" 输出: true
输入: "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. String in Ganzzahl konvertieren (atoi)
Leerzeichen müssen aus der Zeichenfolge entfernt werden, bevor das erste nicht leere Zeichen gefunden wird. Wenn das erste Nicht-Null-Zeichen ein Plus- oder Minuszeichen ist, wählen Sie dieses Zeichen aus und kombinieren Sie es mit so vielen aufeinanderfolgenden Ziffern wie möglich. Dieser Teil des Zeichens ist der Wert der Ganzzahl. Wenn das erste Nicht-Null-Zeichen eine Zahl ist, wird es direkt mit nachfolgenden aufeinanderfolgenden numerischen Zeichen kombiniert, um eine Ganzzahl zu bilden.
Strings können nach den Zeichen, die die Ganzzahl bilden, zusätzliche Zeichen enthalten. Diese Zeichen können ignoriert werden und haben keine Auswirkung auf die Funktion.
Wenn die erste nicht leere Zeichenfolge keine gültige Ganzzahl ist oder die Zeichenfolge nur Leerzeichen enthält, wird keine Konvertierung durchgeführt.
Wenn die Funktion keine gültige Konvertierung durchführen kann, geben Sie 0 zurück.
Erklärung:
Angenommen, unsere Umgebung kann nur 32-Bit-Ganzzahlen mit Vorzeichen speichern, deren Wertebereich [−231, 231 − 1] ist. Wenn der Wert den darstellbaren Bereich überschreitet, wird INT_MAX (231 − 1) oder INT_MIN (−231) zurückgegeben.
Beispiel 1:
输入: "42" 输出: 42
输入: " -42" 输出: -42 解释: 第一个非空白字符为 '-', 它是一个负号。 我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。
输入: "4193 with words" 输出: 4193 解释: 转换截止于数字 '3' ,因为它的下一个字符不为数字。
输入: "words and 987" 输出: 0 解释: 第一个非空字符是 'w', 但它不是数字或正、负号。 因此无法执行有效的转换。
输入: "-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
7. Implementieren Sie strStr()
Erklärung:
Welchen Wert sollten wir zurückgeben, wenn „nadel“ eine leere Zeichenfolge ist? Das ist eine gute Frage, die man in einem Vorstellungsgespräch stellen sollte. Für diese Frage sollten wir 0 zurückgeben, wenn die Nadel eine leere Zeichenfolge ist. Dies steht im Einklang mit der Definition von strstr() in C und indexOf() in Java.
Beispiel 1:
输入: haystack = "hello", needle = "ll" 输出: 2
输入: haystack = "aaaaa", needle = "bba" 输出: -1
/** * @param {string} haystack * @param {string} needle * @return {number} */ var strStr = function(haystack, needle) { return haystack.indexOf(needle) };
indexOf
8. Zählen und sagen
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"
输入: 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 };
我的想法是选出连续的同字符,然后把该字符串变成长度加字符,再拼回去
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
说明:
所有输入只包含小写字母 a-z 。
输入: ["flower","flow","flight"] 输出: "fl"
输入: ["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] || '' };
想法是做一个公共前缀数组,遍历,如果有不满足的,就操作这个前缀数组,直到最后,剩下的就是满足的。取最大的一个。
相关推荐:
Das obige ist der detaillierte Inhalt vonAnwendung von Strings in Javascript (Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!