C#で文字列がパングラムかどうかを判定する方法
パングラムとは?
パングラム(pangram)とは、アルファベットの26文字すべてを少なくとも1回ずつ含む文のことです。最も有名な例として、「The quick brown fox jumps over the lazy dog」が挙げられます。この文にはAからZまでのすべての英字が含まれています。
本記事では、C#を使用して、入力された文字列がパングラムかどうかを判定するプログラムを紹介します。
判定のアプローチ
まず、判定対象となる文字列を用意します。
string str = "The quick brown fox jumps over the lazy dog";
この文字列がパングラムかどうかは、LINQのメソッドを組み合わせることで簡潔に判定できます。具体的には、以下のメソッドを使用します。
- ToLower():文字列をすべて小文字に変換し、大文字と小文字の違いによる重複カウントを防ぎます。
- Char.IsLetter():英字以外の文字(数字や記号、空白など)を除外します。
- GroupBy():同じ文字同士をグループ化します。
- Count():グループの数(=異なる文字の種類数)を取得し、26と一致するかどうかを確認します。
サンプルコード
以下のコードを実行すると、文字列がパングラムかどうかを判定できます。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Demo {
public class Program {
public static void Main(string []arg) {
string str = "The quick brown fox jumps over the lazy dog";
Console.WriteLine("{0}: \"{1}\" is pangram", checkPangram(str), str);
Console.ReadKey();
}
static bool checkPangram(string str) {
return str.ToLower().Where(ch => Char.IsLetter(ch)).GroupBy(ch => ch).Count() == 26;
}
}
}コードのポイント
判定処理を行っているのはcheckPangramメソッドです。処理の流れは以下の通りです。
ToLower()で文字列全体を小文字に統一する。Where(ch => Char.IsLetter(ch))で英字のみを抽出する。GroupBy(ch => ch)で同一文字をまとめる。Count() == 26で、異なる英字がちょうど26種類あるかを判定する。
実行結果
True: "The quick brown fox jumps over the lazy dog" is pangram
出力結果がTrueとなり、この文字列がパングラムであることが確認できました。もし文字列に含まれる英字が26種類に満たない場合は、Falseが返されます。
-
文字列が空かどうかをチェックするPythonプログラム
この記事では、与えられた文字列が空であるかどうかを判定するための解決策とアプローチについて解説します。 問題文 文字列が入力として与えられたとき、その文字列が空(空文字列)であるかどうかを判定する必要があります。 Pythonの文字列はイミュータブル(変更不可)な性質を持っているため、文字列に対して何らかの操作を行う際には注意して扱う必要があります。 ここでは、上記の問題を解決するための2つのアプローチを紹介します。 len()メソッドを使用する方法 等価演算子(==)を使用する方法 アプローチ1:len()メソッドを使う方法 len()関数で文字列の長さを取得し、その長さが0であれば空文
-
Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法
本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列