目次
1. 文字列を反転する
手順
例3:
コメント
2. 整数を反転する
説明
実装
3. 文字列内の最初の一意の文字
ケース 2:
4.有效的字母异位词
说明
示例 2:
方案
点评
5.验证回文字符串
6.字符串转整数(atoi)
7.实现strStr()
4. 有効なアナグラム
9. 最长公共前缀
ホームページ ウェブフロントエンド jsチュートリアル JavaScript での文字列の適用 (コード)

JavaScript での文字列の適用 (コード)

Sep 07, 2018 pm 03:06 PM
javascript

文字列は JavaScript の非常に重要な知識ポイントの 1 つです。この記事には多くの例がリストされているので、それを見て能力を発揮してください。

各 API の使用法をよく理解してください。以下は、leetcodeの質問(文字列入力の質問セット)のjavascriptバージョンの解決策です。

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 ビットの符号付き整数を指定して、整数内の桁を反転します。

注:
私たちの環境では、値の範囲が [−231, 231 − 1] である 32 ビットの符号付き整数のみを格納できると仮定します。この仮定の下では、反転した整数がオーバーフローした場合、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(&#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
    }
};
ログイン後にコピー

コメント

最初の質問と何ら変わりません。文字列に変換、反転、数値に変換します。対処する必要があるのは、範囲外と正と負の数値の問題です

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< の場合、前方および後方に検索することになります。 /code> は一貫性があり、Repeat がないことを証明します <code>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,&#39;&#39;).toLowerCase();
    return _s.split(&#39;&#39;).reverse().join(&#39;&#39;) == _s
};
ログイン後にコピー

点评

通过正则把不要的字符都删掉,转化为小写,翻转比对。

6.字符串转整数(atoi)

说明

实现 atoi,将字符串转为整数。

在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。

字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。

当字符串中的第一个非空字符序列不是个有效的整数;或字符串为空;或字符串仅包含空白字符时,则不进行转换。

若函数不能执行有效的转换,返回 0。

说明:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。如果数值超过可表示的范围,则返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。

示例 1:

输入: "42"
输出: 42
ログイン後にコピー

示例 2:

输入: "   -42"
输出: -42
解释: 第一个非空白字符为 &#39;-&#39;, 它是一个负号。
     我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。
ログイン後にコピー

示例 3:

输入: "4193 with words"
输出: 4193
解释: 转换截止于数字 &#39;3&#39; ,因为它的下一个字符不为数字。
ログイン後にコピー

示例 4:

输入: "words and 987"
输出: 0
解释: 第一个非空字符是 &#39;w&#39;, 但它不是数字或正、负号。
     因此无法执行有效的转换。
ログイン後にコピー

示例 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

7.实现strStr()

说明

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回  -1。

说明:
 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。

示例 1:

输入: haystack = "hello", needle = "ll"
输出: 2
ログイン後にコピー

示例 2:

输入: haystack = "aaaaa", needle = "bba"
输出: -1
ログイン後にコピー

方案

/**
 * @param {string} haystack
 * @param {string} needle
 * @return {number}
 */
var strStr = function(haystack, needle) {
    return haystack.indexOf(needle)
};
ログイン後にコピー

点评

也没什么说的吧,正则或者indexOf 最も速い方法は、もちろん、現在の値を map に保存し、それをカウントして、map を走査することです。また大丈夫です。

4. 有効なアナグラム

説明

2 つの文字列 s と t が与えられた場合、t が s のアナグラムであるかどうかを判断する関数を書きます。

🎜注:🎜 文字列には小文字のみが含まれていると想定できます。 🎜🎜上級:🎜 入力文字列に Unicode 文字が含まれている場合はどうなりますか?この状況に対処できるようにソリューションを適応させることはできますか? 🎜🎜例1:🎜
1.     1
2.     11
3.     21
4.     1211
5.     111221
ログイン後にコピー
ログイン後にコピー
🎜例2:🎜
输入: 1
输出: "1"
ログイン後にコピー
ログイン後にコピー
🎜Scheme🎜
输入: 4
输出: "1211"
ログイン後にコピー
ログイン後にコピー
🎜Comments🎜🎜 これは要素が同じ数あるかどうかを数えて判断するものです。 🎜🎜5. 回文文字列の検証🎜🎜説明🎜🎜 文字列が与えられた場合、それが英字と数字のみが考慮され、文字の大文字と小文字は無視されます。 🎜🎜説明: 🎜 この質問では、空の文字列を有効な回文文字列として定義します。 🎜🎜例 1:🎜
/**
 * @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
};
ログイン後にコピー
ログイン後にコピー
🎜例 2:🎜
输入: ["flower","flow","flight"]
输出: "fl"
ログイン後にコピー
ログイン後にコピー
🎜スキーム🎜
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
ログイン後にコピー
ログイン後にコピー
🎜コメント🎜🎜正規表現を使用して不要な文字をすべて削除し、小文字に変換し、比較のために反転します。 🎜🎜6. 文字列を整数に変換する (atoi) 🎜🎜 説明 🎜🎜 atoi を実装し、文字列を整数に変換します。 🎜🎜最初の空でない文字を見つける前に、文字列内のスペース文字を削除する必要があります。最初の非 null 文字がプラス記号またはマイナス記号である場合は、その記号を選択し、それをできるだけ多くの連続する数字と組み合わせます。文字のこの部分が整数値になります。最初の NULL 以外の文字が数値の場合、後続の連続する数値と直接結合されて整数が形成されます。 🎜🎜文字列には、整数を構成する文字の後に余分な文字を含めることができます。これらの文字は無視でき、関数には影響しません。 🎜🎜 文字列内の最初の空でない文字シーケンスが有効な整数でない場合、または文字列が空である場合、または文字列に空白文字のみが含まれている場合、変換は実行されません。 🎜🎜関数が有効な変換を実行できない場合、0 を返します。 🎜🎜説明: 🎜私たちの環境では、値の範囲が [−231, 231 − 1] である 32 ビットの符号付き整数のみを格納できると仮定します。表現可能な範囲を超えた場合は、INT_MAX(231−1)またはINT_MIN(−231)を返します。 🎜🎜例1:🎜
/**
 * @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] || ''
};
ログイン後にコピー
ログイン後にコピー
🎜例2:🎜rrreee🎜例3:🎜rrreee🎜例4:🎜rrreee🎜例5🎜rrreee🎜スキーム🎜rrreee🎜コメント🎜🎜これについては何も言うことはありません、境界を判断してください、次に parseInt🎜🎜7. strStr() を実装します🎜🎜説明🎜🎜干し草の山の文字列と針の文字列が与えられた場合、干し草の山の文字列内で針の文字列が現れる最初の位置を見つけます (0 から始まります)。 。存在しない場合は、-1 が返されます。 🎜🎜説明:🎜 針が空の文字列の場合、どのような値を返すべきでしょうか?これは面接で尋ねるべき素晴らしい質問です。 🎜 この質問では、needle が空の文字列の場合は 0 を返す必要があります。これは、C の strstr() および Java のindexOf() の定義と一致しています。 🎜🎜例 1:🎜rrreee🎜例 2:🎜rrreee🎜スキーム🎜rrreee🎜コメント🎜🎜 言うことはありません。通常または indexOf を達成できます🎜🎜 8. 説明🎜🎜カウントシーケンスとは整数シーケンスを指し、整数の順序でカウントが実行され、次の数値が取得されます。最初の 5 つの項目は次のとおりです: 🎜
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中的字符串操作

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

以上がJavaScript での文字列の適用 (コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

See all articles