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という結果になります。
-
JavaScriptで2つの文字列から作れる重複なしの最長文字列を求める方法
問題今回は、「a」から「z」までの英小文字のみを含む2つの文字列 s1 と s2 を引数として受け取る JavaScript の関数を作成します。この関数が返すべきのは、s1 または s2 に登場する文字をすべて集め、重複を排除したうえで昇順に並べ替えた、可能な限り長い文字列です。各文字は1回だけ出現し、結果は必ずソートされた状態でなければなりません。たとえば、ある文字が両方の文字列に現れたとしても、結果には1度だけ含める必要があります。解決のアプローチ実装の手順は以下の通りです。1. concat() を使って2つの文字列を連結します。2. toLowerCase() で全体を小文字に統一し
-
C++で2つの文字列の共通しない文字を検索・抽出する方法
はじめに本記事では、C++を使用して2つの文字列に共通しない文字(アンコモン・キャラクター)を見つけるプログラムについて解説します。具体的には、2つの文字列が与えられたとき、どちらか一方の文字列にのみ含まれる文字を抽出し、アルファベット順にソートして出力するのが目的です。問題の概要入力として2つの文字列を受け取り、次の条件を満たす文字を出力します。片方の文字列には存在するが、もう片方には存在しない文字出力はアルファベット順(a〜z)にソートされていること例えば、「tutorials」と「point」という2つの文字列が与えられた場合、共通しない文字は「a l n p r s u」となります。ア