【JavaScript】str2内に出現するstr1の文字数をカウントして返す方法
問題
2つの文字列 str1 と str2 を第1引数・第2引数として受け取るJavaScript関数を作成する必要があります。
この関数の役割は、str1 に含まれる文字のうち、str2 にも出現する文字の個数を数えて返すことです。同じ文字が複数回出現する場合は、それぞれを別々にカウントします。
たとえば、関数への入力が次のような場合を考えてみましょう。
入力
const str1 = 'Kk'; const str2 = 'klKKkKsl';
出力
const output = 5;
この場合、str1 の文字「K」と「k」は str2 内に合計5回出現するため、結果は 5 となります。
コード例
以下が実際のコードです。
const str1 = 'Kk';
const str2 = 'klKKkKsl';
var countAppearances = (str1 = '', str2 = '') => {
const map = {}
for(let c of str1) {
map[c] = true
}
let count = 0
for(let c of str2) {
if(map[c]) {
count+=1
}
}
return count
};
console.log(countAppearances(str1, str2));
コードの解説
この実装では、まず str1 に含まれるすべての文字をキーとして持つマップ(オブジェクト)を作成します。これにより、「どの文字が対象となるか」を高速に判定できるようになります。
次に、str2 の各文字を先頭から順に確認し、その文字がマップに登録されていればカウンターを1つ増やします。大文字と小文字は区別されるため、K と k は別の文字として扱われる点に注意してください。
この方法なら、計算量は O(n + m)(n と m はそれぞれの文字列の長さ)となり、非常に効率的に処理できます。
出力
コンソールには以下のように表示されます。
5
-
JavaScriptで数値の桁を並べ替えて最大値を作る方法
この記事では、与えられた整数の各桁を並べ替えて、表現できる最大の数を求めるJavaScript関数の実装方法を解説します。問題数値 n を引数として受け取るJavaScript関数を用意します。この関数は、n の各桁を自由に入れ替えることで作れる最大の値を返す必要があります。たとえば「124」という数値の場合、各桁(1・2・4)を大きい順に並べ替えることで、最大値である「421」が得られます。アプローチ:大きい桁を左に置く最大の数を作るための基本戦略はシンプルで、「大きな数字ほど上位の桁(左側)に配置する」ことです。これを実現するために、次の手順で処理を行います。数値を文字列に変換し、1桁ずつ
-
C++のSTLを使ってバイナリ配列内の1と0の個数を数える方法
このチュートリアルでは、C++のSTL(標準テンプレートライブラリ)を使用して、バイナリ配列に含まれる「1」と「0」の個数を数えるプログラムについて解説します。具体的には、0と1のみで構成された配列が与えられ、その中に「1」がいくつ、「0」がいくつ含まれているかを求めるのが目的です。実装のポイントこの問題は、STLが提供する count_if() 関数を使うことで、非常にシンプルに解決できます。count_if() は、指定した範囲内の要素のうち、条件を満たす要素の個数を返すアルゴリズムです。まず、要素が「1」であるかどうかを判定する関数を用意し、それを count_if() の第3引数として