Heim > Web-Frontend > js-Tutorial > Hauptteil

Anwendung von Strings in Javascript (Code)

不言
Freigeben: 2018-09-07 15:06:35
Original
1464 Leute haben es durchsucht

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.

1. Kehren Sie die Zeichenfolge um

Beschreibung

Schreiben Sie eine Funktion, die die Eingabezeichenfolge umkehrt.

Beispiel 1:

输入: "hello"
输出: "olleh"
Nach dem Login kopieren

Beispiel 2:

输入: "A man, a plan, a canal: Panama"
输出: "amanaP :lanac a ,nalp a ,nam A"
Nach dem Login kopieren

Implementierung von

/**
 * @param {string} s
 * @return {string}
 */
var reverseString = function(s) {
    return s.split('').reverse().join('')
};
Nach dem Login kopieren

Kommentare

Gemeinsame Schreibmethoden, in Array konvertieren, umdrehen, zurückwechseln.

2. Ganzzahlen umkehren

Erklärung

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.

Beispiel 1:

输入: 123
输出: 321
Nach dem Login kopieren

Beispiel 2:

输入: -123
输出: -321
Nach dem Login kopieren

Beispiel 3:

输入: 120
输出: 21
Nach dem Login kopieren

Implementierung

/**
 * @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(&#39;-&#39;+(Math.abs(x)+&#39;&#39;).split(&#39;&#39;).reverse().join(&#39;&#39;))
    }else{
       _num =  Number(((x)+&#39;&#39;).split(&#39;&#39;).reverse().join(&#39;&#39;))
    }
    if(_num>_max || _num<_min){
        return 0;   
    }else{
        return _num
    }
};
Nach dem Login kopieren

Kommentare

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

3 Das erste eindeutige Zeichen in der Zeichenfolge

Erklärung

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.

Fall 1:

s = "leetcode"
返回 0.
Nach dem Login kopieren

Fall 2:

s = "loveleetcode",
返回 2.
Nach dem Login kopieren

Implementierung

/**
 * @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
};
Nach dem Login kopieren

Kommentare

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. mapmap4. Gültige Buchstabenanagramme

Erklärung

Schreiben Sie bei zwei Zeichenketten s und t eine Funktion, um zu bestimmen, ob t ein Anagramm von s-Positionswörtern ist.

Hinweis:

Sie können davon ausgehen, dass die Zeichenfolge nur Kleinbuchstaben enthält.


Erweitert:

Was passiert, wenn die Eingabezeichenfolge Unicode-Zeichen enthält? Können Sie Ihre Lösung an diese Situation anpassen?


Beispiel 1:

输入: s = "anagram", t = "nagaram"
输出: true
Nach dem Login kopieren

Beispiel 2:

输入: s = "rat", t = "car"
输出: false
Nach dem Login kopieren

Schema

/**
 * @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;
};
Nach dem Login kopieren

Kommentare

Hiermit wird gezählt und dann festgestellt, ob es so ist ist ein Element Alle die gleiche Menge.

5. Palindrom-Zeichenfolge überprüfen

Beschreibung

Überprüfen Sie, ob es sich um eine Palindrom-Zeichenfolge handelt. Es werden nur alphabetische und numerische Zeichen berücksichtigt. Buchstaben können ignoriert werden. Groß- und Kleinschreibung.

Erklärung:

In dieser Frage definieren wir die leere Zeichenfolge als gültige Palindromzeichenfolge.


Beispiel 1:

输入: "A man, a plan, a canal: Panama"
输出: true
Nach dem Login kopieren

Beispiel 2:

输入: "race a car"
输出: false
Nach dem Login kopieren

Schema

/**
 * @param {string} s
 * @return {boolean}
 */
var isPalindrome = function(s) {
    var _s = s.replace(/[^a-z0-9]/gi,&#39;&#39;).toLowerCase();
    return _s.split(&#39;&#39;).reverse().join(&#39;&#39;) == _s
};
Nach dem Login kopieren

Kommentare

Alle unnötigen Zeichen durch reguläre Ausdrücke löschen, konvertiert in Kleinbuchstaben umgewandelt, zum Vergleich umgedreht.

6. String in Ganzzahl konvertieren (atoi)

Erläuterung

Implementieren Sie atoi, um String in Ganzzahl umzuwandeln.

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
Nach dem Login kopieren

Beispiel 2:

输入: "   -42"
输出: -42
解释: 第一个非空白字符为 &#39;-&#39;, 它是一个负号。
     我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。
Nach dem Login kopieren

Beispiel 3:

输入: "4193 with words"
输出: 4193
解释: 转换截止于数字 &#39;3&#39; ,因为它的下一个字符不为数字。
Nach dem Login kopieren

Beispiel 4:

输入: "words and 987"
输出: 0
解释: 第一个非空字符是 &#39;w&#39;, 但它不是数字或正、负号。
     因此无法执行有效的转换。
Nach dem Login kopieren

Beispiel 5

输入: "-91283472332"
输出: -2147483648
解释: 数字 "-91283472332" 超过 32 位有符号整数范围。 
     因此返回 INT_MIN (−231) 。
Nach dem Login kopieren

Schema

/**
 * @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
    }
};
Nach dem Login kopieren

Kommentare

Dazu gibt es nichts zu sagen, beurteilen Sie die Grenze und dann

parseInt7. Implementieren Sie strStr()

Beschreibung

Gegeben eine Heuhaufenschnur und eine Nadelschnur, suchen Sie die erste Position (beginnend bei 0), an der die Nadelschnur in der Heuhaufenschnur erscheint. Wenn es nicht existiert, wird -1 zurückgegeben.

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
Nach dem Login kopieren

Beispiel 2:

输入: haystack = "aaaaa", needle = "bba"
输出: -1
Nach dem Login kopieren

Plan

/**
 * @param {string} haystack
 * @param {string} needle
 * @return {number}
 */
var strStr = function(haystack, needle) {
    return haystack.indexOf(needle)
};
Nach dem Login kopieren

Kommentare

Es gibt nichts zu sagen, regelmäßig oder

kann realisiert werden

indexOf 8. Zählen und sagen

Erklärung

Die Zählfolge bezieht sich auf eine Folge von ganzen Zahlen. Zählen Sie entsprechend der Reihenfolge der ganzen Zahlen Holen Sie sich die nächste Nummer. Die ersten fünf Elemente lauten wie folgt:

1.     1
2.     11
3.     21
4.     1211
5.     111221
Nach dem Login kopieren

1 被读作  "one 1"  ("一个一") , 即 11。
 11 被读作 "two 1s" ("两个一"), 即 21。
 21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211。

给定一个正整数 n ,输出报数序列的第 n 项。
 注意:整数顺序将表示为一个字符串。

示例 1:

输入: 1
输出: "1"
Nach dem Login kopieren

示例 2:

输入: 4
输出: "1211"
Nach dem Login kopieren

方案

/**
 * @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
};
Nach dem Login kopieren

点评

我的想法是选出连续的同字符,然后把该字符串变成长度加字符,再拼回去

9. 最长公共前缀

说明

编写一个函数来查找字符串数组中的最长公共前缀。
 如果不存在公共前缀,返回空字符串 ""。

说明:
 所有输入只包含小写字母 a-z 。

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"
Nach dem Login kopieren

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
Nach dem Login kopieren

方案

/**
 * @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] || ''
};
Nach dem Login kopieren

点评

想法是做一个公共前缀数组,遍历,如果有不满足的,就操作这个前缀数组,直到最后,剩下的就是满足的。取最大的一个。

相关推荐:

JavaScript中的字符串操作

JavaScript计算字符串中每个字符出现的次数

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!