ホームページ ウェブフロントエンド jsチュートリアル JavaScript の基本的な練習: 文字列と回文の反転

JavaScript の基本的な練習: 文字列と回文の反転

Feb 21, 2017 pm 02:22 PM

最近勉強していたら基本アルゴリズムの章に来て、jsの組み込みオブジェクトのメソッドや思考ロジックの習熟度が上がったので、この機会に自分の学習体験とまとめを書き留めておきます。以下の記事では、JavaScriptを使って文字列の反転や回文を実現するための関連情報を中心に紹介していますので、困っている方はぜひ参考にしてみてください。

文字列を反転する

文字列を反転するとは、文字列を逆の順序で処理することを意味します。たとえば、文字列「hello」を指定すると、反転後に「olleh」が返される必要があります。

テストケース

  1. reverseString("hello") は「olleh」を返すはずです reverseString("hello") 应该返回 “olleh”

  2. reverseString("Greetings from Earth") 应该返回 “htraE morf sgniteerG”

实现思路

这里说最方便的方法就是将字符串转成数组,再颠倒数组并转成字符串返回。需要用到字符串对象和数组对象的内置方法:

  1. String.split()

  2. Array.reverse()

  3. Array.join()

具体可以去看JavaScript参考手册

function reverseString(str) {
 return str.split('').reverse().join('');
}

reverseString("hello");
ログイン後にコピー

一句return搞定,很简单有木有?!

在此基础上来看看回文是怎么玩的⬇️

回文

“Madam,I'mAdam.” 这是亚当在伊甸园里碰上夏娃说的第一句话,这句话正着读和反着读一模一样,这样的句子就是回文,英文里叫Palindrome。

举个栗子——“上海自来水来自海上”,这句话顺着读和反着读都是相同的,还有很多英语单词也是:Level、Madam、Radar、LOL(哈哈哈)…

测试用例

  1. palindrome("Race Car") 应该返回 true

  2. palindrome("not a palindrome") 应该返回 false

  3. palindrome("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 リファレンスマニュアルをご覧ください

  • function palindrome(str) {
     str = str.replace(/[\W_]/g,&#39;&#39;).toLowerCase();
     var reverseStr = str.split(&#39;&#39;).reverse().join(&#39;&#39;);
     return str===reverseStr;
    }
    
    palindrome("eye");
    ログイン後にコピー
  • たった 1 回の return で実行でき、非常に便利ですシンプルですね。 !
  • これに基づいて回文がどのように機能するかを見てみましょう⬇️

  • 回文

「マダム、私はアダムです。」これはアダムがエデンの園でイブに会ったときに言った最初の文です、この文は読まれますこのような文は回文であり、英語では 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, &#39;&#39;),
 len = regStr.length;

 for (var i = 0, halfLen = len / 2; i < halfLen; i++){
 if (regStr[i] !== regStr[len - 1 - i]) {
  return false;
 }
 }
 return true;
}
ログイン後にコピー
🎜🎜🎜🎜 オンラインで for ループを使用して次のことを実現できます: 🎜🎜🎜🎜
function palindrome (str) {
 // 删除字符串中不必要的字符
 var re = /[\W_]/g;
 // 将字符串变成小写字符
 var lowRegStr = str.toLowerCase().replace(re, &#39;&#39;);
 // 如果字符串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));
 }
}
ログイン後にコピー
🎜🎜 🎜 このアイデアは回文の特性を巧みに利用しており、文字列全体を半分に切り、それをループして最初と最後の文字が等しいかどうかを判断します。 🎜🎜🎜再帰を使用した実装もあります: 🎜🎜🎜🎜rrreee🎜🎜🎜 他の 2 つの実装アイデアは私よりもはるかに優れていると感じます。私はプログラミングの道をあまり進んでいないので、それを実行しましょう。一歩ずつ。 🎜🎜ところで、文字列を反転することと回文を反転することの違いについては心配しないでください。文字列を反転すると文字列が逆の順序で返されるだけですが、回文はより長く複雑な文に対応するため、スペースと句読点が除外された文と逆の順序の文を比較して、それらが等しいかどうかを確認する必要があります。 🎜🎜文字列の反転や回文に関する基本的な 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)

独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか? 独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか? Mar 18, 2025 pm 03:12 PM

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

ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか? ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか? Mar 18, 2025 pm 03:14 PM

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

フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? Apr 04, 2025 pm 02:42 PM

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

ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか? ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか? Mar 18, 2025 pm 03:16 PM

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

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

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

ソースマップを使用して、マイナイドJavaScriptコードをデバッグするにはどうすればよいですか? ソースマップを使用して、マイナイドJavaScriptコードをデバッグするにはどうすればよいですか? Mar 18, 2025 pm 03:17 PM

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

chart.js:パイ、ドーナツ、バブルチャートを始めます chart.js:パイ、ドーナツ、バブルチャートを始めます Mar 15, 2025 am 09:19 AM

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

Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Apr 04, 2025 pm 05:12 PM

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

See all articles