Pythonで文字列がパングラムかどうかを判定するプログラムの書き方
パングラム(pangram)とは、英語のアルファベット26文字すべてが少なくとも1回は登場する文章のことです。本記事では、Pythonを使って、与えられた文字列 s がパングラムであるかどうかを判定するプログラムの実装方法を解説します。
問題の概要
ある文字列 s が文を表しているとします。このとき、英語のアルファベットのすべての文字が少なくとも1回以上使われているかどうかを確認する必要があります。
例えば、入力が "The grumpy wizards make toxic brew, for the evil queen and Jack" の場合、出力は True になります。この文にはアルファベットの全26文字が含まれているためです。
解決のアプローチ
この問題は、以下の手順で解決できます。
- まず、文字列 s をすべて小文字に変換します
- 次に、英語のアルファベット(a〜z)の各文字についてループ処理を行います
- もしアルファベットのいずれかの文字が s に含まれていない場合は
Falseを返します - すべての文字が含まれていれば
Trueを返します
実装例
以下のコードを見ると、理解がより深まるでしょう。
import string
class Solution:
def solve(self, s):
s = s.lower()
for i in string.ascii_lowercase:
if i not in s:
return False
return True
s = "The grumpy wizards make toxic brew, for the evil queen and Jack"
ob = Solution()
print(ob.solve(s))入力
"The grumpy wizards make toxic brew, for the evil queen and Jack"
出力
True
コードのポイント
s.lower()によって大文字・小文字を区別せずに判定できるようにしていますstring.ascii_lowercaseを使うことで、a〜z の文字列を簡単に取得できます- 計算量は O(26 × n)(n は文字列の長さ)となり、効率的に動作します
なお、より簡潔に書きたい場合は、set(s.lower()) >= set(string.ascii_lowercase) のように集合演算を利用する方法もあります。
-
文字列が空かどうかをチェックするPythonプログラム
この記事では、与えられた文字列が空であるかどうかを判定するための解決策とアプローチについて解説します。 問題文 文字列が入力として与えられたとき、その文字列が空(空文字列)であるかどうかを判定する必要があります。 Pythonの文字列はイミュータブル(変更不可)な性質を持っているため、文字列に対して何らかの操作を行う際には注意して扱う必要があります。 ここでは、上記の問題を解決するための2つのアプローチを紹介します。 len()メソッドを使用する方法 等価演算子(==)を使用する方法 アプローチ1:len()メソッドを使う方法 len()関数で文字列の長さを取得し、その長さが0であれば空文
-
Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法
本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列