JavaScript の基本的な練習: 文字列と回文の反転
最近勉強していたら基本アルゴリズムの章に来て、jsの組み込みオブジェクトのメソッドや思考ロジックの習熟度が上がったので、この機会に自分の学習体験とまとめを書き留めておきます。以下の記事では、JavaScriptを使って文字列の反転や回文を実現するための関連情報を中心に紹介していますので、困っている方はぜひ参考にしてみてください。
文字列を反転する
文字列を反転するとは、文字列を逆の順序で処理することを意味します。たとえば、文字列「hello」を指定すると、反転後に「olleh」が返される必要があります。
テストケース
reverseString("hello")
は「olleh」を返すはずですreverseString("hello")
应该返回 “olleh”reverseString("Greetings from Earth")
应该返回 “htraE morf sgniteerG”
实现思路
这里说最方便的方法就是将字符串转成数组,再颠倒数组并转成字符串返回。需要用到字符串对象和数组对象的内置方法:
String.split()
Array.reverse()
Array.join()
具体可以去看JavaScript参考手册
function reverseString(str) { return str.split('').reverse().join(''); } reverseString("hello");
一句return搞定,很简单有木有?!
在此基础上来看看回文是怎么玩的⬇️
回文
“Madam,I'mAdam.” 这是亚当在伊甸园里碰上夏娃说的第一句话,这句话正着读和反着读一模一样,这样的句子就是回文,英文里叫Palindrome。
举个栗子——“上海自来水来自海上”,这句话顺着读和反着读都是相同的,还有很多英语单词也是:Level、Madam、Radar、LOL(哈哈哈)…
测试用例
palindrome("Race Car")
应该返回 truepalindrome("not a palindrome")
应该返回 falsepalindrome("0_0 (: /- :) 0-0")
应该返回 true
实现思路
我们需要写一个叫palindrome()
的方法,传入一个叫str的参数,如果str是一个Palindromes将返回true,反之为false。
需要注意将标点符号和空格去掉并toUpperCase or toLowerCase后再进行判断。
需要用到以下知识点:
正则表达式 (regular expression) ,用来过滤符号和空格
String.replace()
替换与正则表达式匹配的子串String.toLowerCase()
reverseString("Greetings from Earth")
は返すはずです"htraE morf sgniteerG"- ここで最も便利な方法は、文字列を配列に変換し、配列を反転して文字列に変換して返すことです。文字列オブジェクトと配列オブジェクトの組み込みメソッドを使用する必要があります:
String.split()
Array.reverse()
- < code>Array.join()
- 詳しくは、JavaScript リファレンスマニュアルをご覧ください
- たった 1 回の return で実行でき、非常に便利ですシンプルですね。 !
- これに基づいて回文がどのように機能するかを見てみましょう⬇️
- 回文
function palindrome(str) { str = str.replace(/[\W_]/g,'').toLowerCase(); var reverseStr = str.split('').reverse().join(''); return str===reverseStr; } palindrome("eye");
「マダム、私はアダムです。」これはアダムがエデンの園でイブに会ったときに言った最初の文です、この文は読まれますこのような文は回文であり、英語では Palindrome と呼ばれます。 例 - 「上海の水道水は海から来ています」 この文は同じように、逆から読んでも、レベル、マダム、レーダー、LOL (笑)...
テストケース。
palindrome("Race Car")
は true を返すはずですpalindrome("not a palindrome")
は false を返すはずです < code>palindrome("0_0 (: /- :) 0-0") は true を返すはずです
実装アイデア
呼び出し メソッドを記述する必要がありますpalindrome()
の関数は str というパラメータを渡します。str が回文の場合は true を返し、それ以外の場合は false を返します。
句読点やスペースの削除、大文字か小文字かに注意して判断してください。
🎜🎜次の知識ポイントを使用する必要があります: 🎜🎜🎜🎜🎜正規表現 (正規表現)、記号とスペースのフィルタリングに使用されます🎜🎜🎜🎜String.replace()
置換と正規表現部分文字列の一致 🎜🎜🎜🎜String.toLowerCase()
文字列を小文字に変換します 🎜🎜🎜🎜🎜正規表現について 🎜🎜🎜🎜 これには、大文字と小文字の英字と整数、句読点が一致する必要がありますスペースはフィルターで除外されます。したがって、/[^A-Za-z0–9]/g または /[W_]/g🎜🎜🎜🎜[^A-Z] を使用して、26 文字以外の大文字 🎜🎜🎜🎜[^a-z] のいずれかと一致させることができます。 ] と一致します 26 個の小文字のいずれとも一致しません 🎜🎜🎜🎜[^0-9] 0 ~ 9 以外の任意の数字と一致します 🎜🎜🎜🎜[^_] アンダースコア以外と一致します 🎜🎜🎜🎜^文字列 🎜🎜🎜🎜w 小文字であり、文字、数字、アンダースコア、または中国語の文字と一致することに注意してください 🎜🎜🎜🎜W これは大文字であり、文字、数字、アンダースコア、または漢字以外の文字と一致することに注意してください。 to [^A-Za-z0- 9_] 表示 G は、グローバル検索であることを示します 🎜🎜🎜🎜🎜 これは私の方法です: 🎜🎜🎜🎜function palindrome (str) { var reg = /[\W_]/g, regStr = str.toLowerCase().replace(reg, ''), len = regStr.length; for (var i = 0, halfLen = len / 2; i < halfLen; i++){ if (regStr[i] !== regStr[len - 1 - i]) { return false; } } return true; }
function palindrome (str) { // 删除字符串中不必要的字符 var re = /[\W_]/g; // 将字符串变成小写字符 var lowRegStr = str.toLowerCase().replace(re, ''); // 如果字符串lowRegStr的length长度为0时,字符串即是palindrome if (lowRegStr.length === 0) { return true; } // 如果字符串的第一个和最后一个字符不相同,那么字符串就不是palindrome if (lowRegStr[0] !== lowRegStr[lowRegStr.length - 1]) { return false; } else { return palindrome(lowRegStr.slice(1, lowRegStr.length - 1)); } }

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

ホットトピック









記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

このチュートリアルでは、chart.jsを使用してパイ、リング、およびバブルチャートを作成する方法について説明します。以前は、4つのチャートタイプのchart.js:ラインチャートとバーチャート(チュートリアル2)、およびレーダーチャートと極地域チャート(チュートリアル3)を学びました。 パイとリングチャートを作成します パイチャートとリングチャートは、さまざまな部分に分かれている全体の割合を示すのに理想的です。たとえば、パイチャートを使用して、サファリの男性ライオン、女性ライオン、若いライオンの割合、または異なる候補者が選挙で受け取る票の割合を示すことができます。 パイチャートは、単一のパラメーターまたはデータセットの比較にのみ適しています。パイチャートのファンの角度はデータポイントの数値サイズに依存するため、パイチャートは値のあるエンティティをゼロ値で描画できないことに注意してください。これは、割合がゼロのエンティティを意味します

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...
