JavaScriptで文字列の大文字の使い方が正しいかどうかを判定する方法
本記事では、次の3つのルールに基づいて「大文字の正しい使用」を定義します。
- 単語内のすべての文字が大文字である(例:「INDIA」)
- 単語内のすべての文字が大文字ではない(例:「example」)
- 単語の先頭の文字のみが大文字である(例:「Ramesh」)
この条件をもとに、文字列を受け取り、その文字列が上記3つのルールのいずれかに合致するかどうかを判定するJavaScript関数を作成します。合致する場合は true を返し、そうでない場合は false を返します。
実装例
const detectCapitalUse = (word = '') => {
let allCap = true;
for (let i = 0; i < word.length; i++){
if (word.charAt(i) === word.charAt(i).toUpperCase()){
if (allCap) continue;
else return false;
}
else {
if (allCap && i > 1)
return false;
else allCap = false;
};
};
return true;
};
console.log(detectCapitalUse('INDIA'));
console.log(detectCapitalUse('jdsdS'));
console.log(detectCapitalUse('dsdsdsd'));コードの解説
このアルゴリズムのポイントは、フラグ変数 allCap を使って「ここまで読んだ文字がすべて大文字であるか」を追跡し続ける点です。処理の流れは以下の通りです。
- 現在の文字が大文字の場合:
allCapがtrueのままであればそのまま処理を続行し、すでにfalseになっていれば大文字と小文字が混在しているためルール違反としてfalseを返します。 - 現在の文字が小文字の場合:インデックスが1より大きく、それまでの文字がすべて大文字だったときは
falseを返します(先頭以外で大文字から小文字へ切り替わっているため)。それ以外の場合はallCapをfalseに更新して続行します。
ループを最後まで抜けられたということは、文字列が3つのルールのいずれかに合致していることを意味するため、最終的に true を返します。
出力結果
コンソールには次のように表示されます。
true false true
-
JavaScriptで文字列から形成できる最長の単語を見つける方法
問題 JavaScriptで関数を記述する必要があります。この関数は、第1引数としてランダムな英字からなる文字列 str を、第2引数として文字列の配列 arr を受け取ります。 関数の役割は、文字列 str からいくつかの文字を削除したときに、配列 arr にも存在する最長の単語を作れるかどうかを調べることです。そして、作成可能な最長の文字列を返します。 該当する文字列が存在しない場合は、空文字列を返す必要があります。 例えば、関数への入力が以下の場合を考えてみましょう。 const str = sdgfdfghdjh; const arr = [sdf, fghj, gfdfg, absc
-
JavaScriptでボグル(Boggle)盤上の単語を検証するアルゴリズム
問題概要ボグル(Boggle)盤とは、個々の文字が並んだ2次元配列のことです。例えば以下のようなものがあります。const board = [ [I,L,A,W], [B,N,G,E], [I,U,A,O], [A,S,R,L] ];ここで求められているのは、JavaScriptの関数を作成し、ボグル盤と文字列を受け取って、その文字列がボグル盤上の有効な解答(バリッドな推測)であるかどうかを判定することです。有効な推測とは、隣接するセル(上下左右および斜め方向)をつなぎ合わせて形成できる文字列であり、かつ一度使用したセルを再利用しないという条件を満たすものを指し