JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで2つの文字列の不一致箇所(相違点)を数える方法

この記事では、2つの文字列を受け取り、対応する位置の文字がどれだけ異なっているか(不一致の数)を求めるJavaScript関数の作り方を解説します。

問題の概要

2つの文字列を先頭から1文字ずつ比較し、同じ位置にある文字同士が一致しない場合に「相違点」としてカウントします。つまり、対応する要素が等しくない場合のみ不一致とみなします。

例として、次の2つの文字列を使います。

const str1 = 'Hello world!!!';
const str2 = 'Hellp world111';

この2つの文字列を比較すると、「o」と「p」の違い1箇所と、末尾の「!!!」と「111」の違い3箇所を合わせて、合計4つの不一致があります。

サンプルコード

以下は、実際に不一致の数をカウントする関数の実装例です。

const str1 = 'Hello world!!!';
const str2 = 'Hellp world111';

const dissimilarity = (str1 = '', str2 = '') => {
    let count = 0;
    for(let i = 0; i < str1.length; i++){
        if(str1[i] === str2[i]){
            continue;
        };
        count++;
    };
    return count;
};
console.log(dissimilarity(str1, str2));

コードのポイント

  • 引数にはデフォルト値として空文字列を設定しているため、引数なしでもエラーにならず安全に呼び出せます。
  • forループで1文字目から順番に str1[i]str2[i] を厳密等価演算子(===)で比較しています。
  • 文字が一致していれば continue でスキップし、異なる場合はカウンター count をインクリメントします。

出力結果

コンソールに出力される結果は次のとおりです。

4

5文字目の「o」と「p」、および末尾3文字の「!!!」と「111」がそれぞれ異なるため、合計4という結果になります。

  1. JavaScriptで2つの文字列から作れる重複なしの最長文字列を求める方法

    問題今回は、「a」から「z」までの英小文字のみを含む2つの文字列 s1 と s2 を引数として受け取る JavaScript の関数を作成します。この関数が返すべきのは、s1 または s2 に登場する文字をすべて集め、重複を排除したうえで昇順に並べ替えた、可能な限り長い文字列です。各文字は1回だけ出現し、結果は必ずソートされた状態でなければなりません。たとえば、ある文字が両方の文字列に現れたとしても、結果には1度だけ含める必要があります。解決のアプローチ実装の手順は以下の通りです。1. concat() を使って2つの文字列を連結します。2. toLowerCase() で全体を小文字に統一し

  2. C++で2つの文字列の共通しない文字を検索・抽出する方法

    はじめに本記事では、C++を使用して2つの文字列に共通しない文字(アンコモン・キャラクター)を見つけるプログラムについて解説します。具体的には、2つの文字列が与えられたとき、どちらか一方の文字列にのみ含まれる文字を抽出し、アルファベット順にソートして出力するのが目的です。問題の概要入力として2つの文字列を受け取り、次の条件を満たす文字を出力します。片方の文字列には存在するが、もう片方には存在しない文字出力はアルファベット順(a〜z)にソートされていること例えば、「tutorials」と「point」という2つの文字列が与えられた場合、共通しない文字は「a l n p r s u」となります。ア