文字列は 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_max || _num<_min><h4 id="コメント">コメント</h4> <p> 最初の質問と何ら変わりません。文字列に変換、反転、数値に変換します。対処する必要があるのは、範囲外と正と負の数値の問題です</p> <h3 id="文字列内の最初の一意の文字">3. 文字列内の最初の一意の文字</h3> <h4 id="説明">説明</h4> <p>文字列が与えられた場合、その最初の非繰り返し文字を見つけて返します。の指標。存在しない場合は、-1 が返されます。 <br> 注: <br> 文字列には小文字のみが含まれていると想定できます。 </p> <h4 id="ケース">ケース 1:</h4> <pre class="brush:php;toolbar:false">s = "leetcode" 返回 0.
ケース 2:
s = "loveleetcode", 返回 2.
実装
/** * @param {string} s * @return {number} */ var firstUniqChar = function(s) { for(var i = 0 ; i <h4 id="コメント">コメント</h4><p> この解決策は、<code>index は一貫性があり、Repeat がないことを証明します <code>index</code>一致就证明没重复<br> 最快的方法当然是把当前的存在<code>map</code>里面,然后计数,再遍历一遍<code>map</code>就ok。</code></p><h3 id="有效的字母异位词">4.有效的字母异位词</h3><h4 id="说明">说明</h4><p>给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。</p><p>说明:<br> 你可以假设字符串只包含小写字母。</p><p>进阶:<br> 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?</p><h4 id="示例">示例 1:</h4><pre class="brush:php;toolbar:false">输入: 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><h4 id="点评">点评</h4> <p>这个就是通过计数,然后判断是否元素都一样多。</p> <h3 id="验证回文字符串">5.验证回文字符串</h3> <h4 id="说明">说明</h4> <p>给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。</p> <p>说明:<br> 本题中,我们将空字符串定义为有效的回文串。</p> <h4 id="示例">示例 1:</h4> <pre class="brush:php;toolbar:false">输入: "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)-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>''+v.length+v[0]).join(''); } return _str };</n>🎜例 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>🎜例2:🎜rrreee🎜例3:🎜rrreee🎜例4:🎜rrreee🎜例5🎜rrreee🎜スキーム🎜rrreee🎜コメント🎜🎜これについては何も言うことはありません、境界を判断してください、次に <code> parseInt</code>🎜🎜7. strStr() を実装します🎜🎜説明🎜🎜干し草の山の文字列と針の文字列が与えられた場合、干し草の山の文字列内で針の文字列が現れる最初の位置を見つけます (0 から始まります)。 。存在しない場合は、-1 が返されます。 🎜🎜説明:🎜 針が空の文字列の場合、どのような値を返すべきでしょうか?これは面接で尋ねるべき素晴らしい質問です。 🎜 この質問では、needle が空の文字列の場合は 0 を返す必要があります。これは、C の strstr() および Java のindexOf() の定義と一致しています。 🎜🎜例 1:🎜rrreee🎜例 2:🎜rrreee🎜スキーム🎜rrreee🎜コメント🎜🎜 言うことはありません。通常または <code>indexOf</code> を達成できます🎜🎜 8. 説明🎜🎜カウントシーケンスとは整数シーケンスを指し、整数の順序でカウントが実行され、次の数値が取得されます。最初の 5 つの項目は次のとおりです: 🎜<pre class="brush:php;toolbar:false">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>''+v.length+v[0]).join(''); } return _str };</n>
点评
我的想法是选出连续的同字符,然后把该字符串变成长度加字符,再拼回去
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><h4 id="点评">点评</h4> <p>想法是做一个公共前缀数组,遍历,如果有不满足的,就操作这个前缀数组,直到最后,剩下的就是满足的。取最大的一个。</p> <p>相关推荐:</p> <p><a href="http://www.php.cn/js-tutorial-341302.html" target="_self">JavaScript中的字符串操作</a><br></p> <p><a href="http://www.php.cn/js-tutorial-341093.html" target="_self">JavaScript计算字符串中每个字符出现的次数</a></p></strs.length>
以上がJavaScript での文字列の適用 (コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
