JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. JavaScriptで特定のルールに従って文字列を反転する方法

    問題の概要 今回は、文字列 str を第一引数、整数 num を第二引数として受け取るJavaScript関数を作成します。 この関数が満たすべき要件は以下のとおりです。 基本ルール: 文字列の先頭から数えて 2 × num 文字ごとのブロックに着目し、各ブロックの最初の num 文字だけを反転させる。残りの部分は元の順序のまま維持する。 残りが num 文字未満の場合: 残った文字をすべて反転する。 残りが num 文字以上・2 × num 文字未満の場合: 最初の num 文字のみを反転し、残りはそのまま出力する。 具体例で確認する たとえば、入力として次のような文字列と数値が与えら

  2. JavaScriptでURL短縮サービスを作る:エンコード・デコード関数の実装方法

    bit.lyやtinyurlなど、長いURLを受け取って何らかの暗号化処理を施し、非常に短いURLを返すサービスを目にする機会は多いでしょう。そして、その短縮URLを開こうとすると、今度は復号処理が実行されて元のURLへと変換され、目的のページが表示されます。今回は、まったく同じ仕組みをJavaScriptで実装してみましょう。具体的には、次の2つの関数を用意します。encrypt() ― 元の(長い)URLを受け取り、一意な短縮URLを返します。decrypt() ― 短縮URLを受け取り、元のURLに関する事前情報を持たない状態でも、元のURLへと復元します。実装の考え方ここでは、Node

  3. JavaScriptで二分探索木(BST)内の最小絶対差を求める方法

    問題の概要 数値データを格納した二分探索木(BST)のルートノードを受け取り、木に存在する任意の2つのノード間の絶対差の最小値を返すJavaScript関数を作成します。 例として、次のような二分探索木を考えてみましょう。 1 \ 3 / 2 この木に対する期待される出力は以下の通りです。 const output = 1; これは |1 − 2| = |3 − 2| = 1 となるためです。 解法のポイント:中順走査の活用 二分探索木には「中順走査(In-order Traversal)を行うとノードの値が必ず昇順に並ぶ」という重要な性質があります。この性質を利用すれば、すべてのノー

  4. JavaScriptで配列の値に基づいて文字列の文字をシフトする方法

    本記事では、小文字の英字のみで構成された文字列に対して、配列内の数値に従って各文字をシフトするJavaScript関数の実装方法を解説します。 問題の概要 まず、「1単位のシフト」を次のように定義します。ある文字を、アルファベット順でその直後の文字に置き換えること。これには循環(ラップアラウント)も含まれます。つまり、「z」の次の文字は「a」となります。 今回作成する関数は、以下の2つの引数を受け取ります。 str: 小文字英字のみを含む文字列(第1引数) arr: strと同じ長さを持つ数値の配列(第2引数) 関数は、元の文字列の各文字を、配列arr内の同じ位置にある数値の分だけ

  5. JavaScriptで文字列のシフト操作を効率的に実行する方法

    問題の概要小文字の英字で構成される文字列 str と、配列の配列 arr が与えられているとします。ここで arr[i] = [direction, amount] の形式でシフト操作が表されます。direction は 0(左シフト)または 1(右シフト)を表します。amount は文字列をシフトする回数です。1回の左シフトとは、文字列の先頭の文字を取り除いて末尾に追加することを意味します。同様に、1回の右シフトとは、文字列の末尾の文字を取り除いて先頭に追加することを意味します。ここで求められているのは、文字列を第1引数として、シフト操作のデータを含む配列を第2引数として受け取るJavaSc

  6. JavaScriptで等差数列から欠落している数字を効率的に見つける方法

    等差数列(Arithmetic Progression)とは 等差数列(AP)とは、隣り合う項どうしの差が常に一定であるような数列のことを指します。 たとえば「5, 7, 9, 11, 13…」という数列は、各項の差が2で一定であるため、典型的な等差数列です。 問題設定 ここで、等差数列の要素が順番に並んだ配列があるとします。しかし、何らかの理由でその数列から1つの数字だけが欠落してしまったとしましょう。 求められているのは、この配列を第1引数(唯一の引数)として受け取るJavaScript関数です。この関数は、1回の走査(イテレーション)だけで欠落している数字を見つけ出し、それを返す必要が

  7. JavaScriptで配列内の紛らわしい数(Confusing Number)を見つける方法

    紛らわしい数(Confusing Numbers)とは? 配列内のある数値が「紛らわしい数」とみなされるのは、その数値を上下左右に180度回転した結果が、同じ配列内に存在する別の数値になる場合です。たとえば、6を180度回転すると9になり、逆に9を回転すると6になります。 ただし注意が必要なのは、180度回転しても有効な数字として成立するのは 0、1、6、8、9 の5種類だけという点です。2、3、4、5、7 を含む数値は、回転しても正しい数として扱うことができません。 今回求められているのは、自然数 num を第1引数(唯一の引数)として受け取るJavaScript関数を作成することです。この

  8. JavaScriptで配列内の最小値の桁和が偶数かどうかを判定する方法

    本記事では、数値の配列を唯一の引数として受け取るJavaScript関数の実装方法を解説します。この関数は、まず配列の中から最小の数値を選び出し、その数値を構成するすべての桁の合計(桁和)を計算します。そして、その桁和が偶数であれば true を、奇数であれば false を返すという仕様です。動作の例たとえば、次のような入力配列が与えられた場合を考えてみましょう。const arr = [12, 657, 23, 56, 34, 678, 42];この場合の出力は次のようになります。const output = false;理由はシンプルです。配列内の最小値は 12 であり、その桁和は 1

  9. JavaScriptで2つの文字列の最大公約数(GCD)を求める方法

    数学における最大公約数(GCD:Greatest Common Divisor)とは、2つの整数をどちらも割り切る最大の数のことです。この概念を文字列に応用すると、2つの文字列のGCDは、両方の文字列を構成できる最長の部分文字列(共通パターン)を意味します。具体例例えば、次の2つの文字列があるとします。const str1 = abcabc; const str2 = abc;この場合、「abcabc」は「abc」を2回繰り返した文字列なので、2つの文字列のGCDは以下のようになります。const gcd = abc;ここでは、2つの文字列 str1 と str2 を引数として受け取り、それら

  10. JavaScriptで有効なワードスクエアを判定する方法を解説

    ワードスクエアとは?ワードスクエア(Word Square)とは、複数の単語を正方形のマス目状に並べ、横方向(行)にも縦方向(列)にも同じ単語が読めるように配置したものです。例えば、次のような配置は有効なワードスクエアの一例です。HEARTEMBERABUSERESINTREND1行目を横に読むと「HEART」、1列目を縦に読んでも「HEART」となり、同様にすべての行と列が対応しています。作成する関数の仕様今回は、単語の配列を引数として受け取るJavaScript関数を実装します。入力された配列が有効なワードスクエアを構成している場合は true を、そうでない場合は false を返します

  11. JavaScriptでターゲット文字より大きい最小の文字を二分探索で見つける方法

    問題の概要小文字の英字のみを含むソート済みの文字配列 letters と、ターゲットとなる文字 target が与えられます。求められているのは、配列を第一引数、文字を第二引数として受け取り、「ターゲットより大きい文字の中で最小のもの」を配列から見つけ出すJavaScript関数を作成することです。注意すべきポイントとして、文字は周回(ラップアラウンド)するという仕様があります。たとえば target = z、letters = [a, b] の場合、ターゲットより大きい文字は存在しないため、先頭に戻って答えは a となります。入出力例たとえば、入力となる配列と文字が次の場合を考えてみましょう

  12. JavaScriptで文字列内のすべての回文部分列を数える方法【動的計画法】

    回文(パリンドローム)とは? 回文(パリンドローム)とは、前から読んでも後ろから読んでも同じになる文字列のことです。例えば、「aba」「madam」「did」などは、いずれも正しい回文の例です。 問題の概要 今回作成するのは、文字列を引数として受け取り、その中に含まれるすべての回文部分列(連続しているかどうかを問わない)の総数を数えて返すJavaScript関数です。 なお、入力として与えられる文字列は「a」「b」「c」「d」の4種類の文字のみで構成されていることが保証されています。 入出力の例 たとえば、入力文字列が次の通りだったとします。 const str = bccb; この場合の出

  13. JavaScriptで配列を合計が等しいn個のグループに分割できるか判定する方法

    本記事では、数値の配列 arr を第一引数、整数 num を第二引数として受け取るJavaScript関数の実装方法を解説します。この関数の目的は、配列の要素を num 個のグループに分配したとき、すべてのグループの合計が等しくなるような分割方法が存在するかどうかを判定することです。分割方法が存在する場合は true を、存在しない場合は false を返します。問題の例たとえば、入力として次のような配列と数値が与えられたとします。const arr = [4, 6, 3, 3, 7, 4, 1]; const num = 4;この場合の出力は次のようになります。const output =

  14. JavaScriptで配列内の要素がすべて一意(ユニーク)かどうかをチェックする方法

    JavaScriptで、数値の配列を引数として受け取り、その配列に含まれるすべての数値が一度だけ出現する(=重複が一切ない)場合には true を、そうでない場合には false を返す関数を作成してみましょう。問題の例たとえば、次のような入力配列が与えられたとします。const arr = [12, 45, 6, 34, 12, 57, 79, 4];この場合、期待される出力は次のとおりです。const output = false;これは、数値 12 が配列内に2回出現しているためです。indexOf と lastIndexOf を使った実装例この問題は、各要素に対して indexOf()

  15. JavaScriptで配列から最大の「1度だけ現れる数値」を見つける方法

    本記事では、整数の配列を第1引数(かつ唯一の引数)として受け取るJavaScript関数を作成する方法を解説します。この関数の役割は、配列を順番に走査し、その中で一度だけ出現する数値のうち最大のものを見つけ出して返すことです。もし配列内に一意な数値がひとつも存在しない場合は、-1を返す仕様とします。前提となる制約配列の各要素には次の制約が与えられています。つまり、すべての要素は0より大きく101未満であることが保証されています。0 < arr[i] < 101具体例たとえば、入力配列が以下のような場合を考えてみましょう。const arr = [35, 37, 33, 39, 34

  16. 【JavaScript】値が(1始まりの)インデックスと一致する要素をすべて抽出する方法

    本記事では、数値の配列を第一引数(かつ唯一の引数)として受け取るJavaScript関数の作成方法を解説します。この関数は、元の配列をもとに新しい配列を構築して返します。新しい配列には、元の配列の中から「値が自分自身のインデックスと一致している」要素だけが含まれます。ここでの重要なポイントは、インデックスの判定に従来の0始まり(0-based)ではなく、1始まり(1-based)のインデックスを使用することです。要件の整理入力配列が次の場合:const arr = [45, 5, 2, 4, 6, 6, 6];期待される出力は次のとおりです:const output = [4, 6];これは、

  17. JavaScriptで文字列を並べ替えて回文を作れるか判定する方法

    問題の概要JavaScriptで、文字列を唯一の引数として受け取る関数を作成する必要があります。この関数の役割は、文字列内の文字を並べ替えることで回文(前から読んでも後ろから読んでも同じになる文字列)を作成できるかどうかを判定することです。回文を作れる場合は true を、作れない場合は false を返します。例入力文字列が以下の場合:const str = amadm;出力は次のようになります:const output = true;これは、文字列を並べ替えると「madam」という回文になるためです。実装コードこの問題を解くコードは以下のとおりです: { const hash =

  18. JavaScriptで文字列内の空白を「%20」に変換する方法

    Web上のURLにスペースが含まれている場合、ブラウザは自動的にすべての半角スペースを「%20」という文字列に置き換えます。本記事では、文字列を第一引数(唯一の引数)として受け取り、文字列中の空白があった位置をすべて「%20」に置き換えた新しい文字列を生成して返すJavaScript関数を作成します。問題の例たとえば、入力文字列が次の場合:const str = some extra Space;期待される出力は以下のとおりです。const output = some%20extra%20%20Space;「extra」と「Space」の間には元々2つ連続した空白があるため、出力では「%20%

  19. JavaScriptで文字列を圧縮する方法|ランレングス圧縮の実装

    本記事では、連続して繰り返される文字を含む可能性のある文字列を受け取り、それを圧縮して返すJavaScript関数の実装方法を解説します。 文字列圧縮のルール この関数は、連続する同じ文字を「1文字+連続回数」の形式に変換することで、文字列を圧縮します。 k4j 圧縮しても短くならない場合の扱い ただし、圧縮後の文字列の長さが元の文字列以上になってしまう場合は、圧縮を行わずに元の文字列をそのまま返す必要があります。 たとえば「aab」は「a2b1」と圧縮できますが、長さが3文字から4文字に増えてしまいます。このようなケースでは、関数は元の「aab」を返すように設計します。 サンプルコード 実

  20. 【JavaScript】指定した数値より小さくなる2つの要素の合計の最大値を求める方法

    この記事では、数値の配列 arr を第1引数、単一の数値 num を第2引数として受け取るJavaScript関数を作成します。 この関数の目的は、配列の中から「合計が num よりも小さくなるような2つの数値」を見つけ出し、その中で最大の合計値を返すことです。もし合計が num 未満になる2つの数値の組み合わせが存在しない場合は、-1 を返します。 問題の例 たとえば、入力となる配列と数値が以下の場合を考えてみましょう。 const arr = [34, 75, 33, 23, 1, 24, 54, 8]; const num = 60; この場合、期待される出力は次のとおりです。 cons

Total 5937 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:29/297  20-コンピューター/Page Goto:1 23 24 25 26 27 28 29 30 31 32 33 34 35