文字列に数字・小文字・大文字がすべて含まれているかを判定するPythonプログラム
ある文字列 s が与えられたとき、その文字列が以下の3種類の文字をすべて含んでいるかどうかを確認する方法を解説します。
- 数字(0〜9)
- 小文字のアルファベット(a〜z)
- 大文字のアルファベット(A〜Z)
注意: これ以外の記号や特殊文字が含まれていても構いませんが、上記の3種類は必ず含まれている必要があります。
例えば、入力が s = "p25KDs" の場合、数字(2と5)、小文字(p、s)、大文字(K、D)がすべて含まれているため、出力は True になります。
解決の手順
この問題は、以下の手順で解くことができます。
- サイズ3の真偽値配列を作成し、すべて
Falseで初期化します。各要素は「数字」「小文字」「大文字」の検出結果に対応します。 - 文字列内の各文字
cについて以下を繰り返します。cが英数字であれば、arr[0]をTrueにします。cが小文字であれば、arr[1]をTrueにします。cが大文字であれば、arr[2]をTrueにします。
- ループ終了後、配列
arrのすべての要素がTrueであればTrueを返します。
実装例
理解を深めるために、実際のコードを見てみましょう。
def solve(s):
arr = [False] * 3
for c in s:
if c.isalnum():
arr[0] = True
if c.islower():
arr[1] = True
if c.isupper():
arr[2] = True
return all(arr)
s = "p25KDs"
print(solve(s))入力
"p25KDs"
出力
True
コードのポイント
このプログラムでは、Pythonの組み込み文字列メソッドを活用しています。
isalnum():文字が英数字であるかを判定します。islower():文字が小文字であるかを判定します。isupper():文字が大文字であるかを判定します。all():イテラブル内のすべての要素がTrueの場合にTrueを返します。
このアルゴリズムの計算量は O(n) です(n は文字列の長さ)。文字列を一度だけ走査すればよいため、非常に効率的な実装となっています。パスワードのバリデーションなど、文字種の多様性をチェックする場面で応用できる実用的なパターンです。
-
文字列が空かどうかをチェックするPythonプログラム
この記事では、与えられた文字列が空であるかどうかを判定するための解決策とアプローチについて解説します。 問題文 文字列が入力として与えられたとき、その文字列が空(空文字列)であるかどうかを判定する必要があります。 Pythonの文字列はイミュータブル(変更不可)な性質を持っているため、文字列に対して何らかの操作を行う際には注意して扱う必要があります。 ここでは、上記の問題を解決するための2つのアプローチを紹介します。 len()メソッドを使用する方法 等価演算子(==)を使用する方法 アプローチ1:len()メソッドを使う方法 len()関数で文字列の長さを取得し、その長さが0であれば空文
-
【Python】文字列がすべてユニークな文字で構成されているか判定する方法
本記事では、与えられた文字列に含まれる文字がすべて一意(ユニーク)であるかどうかを判定するPythonプログラムについて、その解法とアプローチをわかりやすく解説します。 問題の概要 文字列が入力として与えられたとき、その文字列に含まれるすべての文字が重複なく一意であるかどうかを判定します。たとえば「abcde」はすべて異なる文字で構成されているためTrue、「tutorialspoint」のように同じ文字が複数回出現する場合はFalseとなります。 アプローチ この問題は、以下のような手順で効率的に解くことができます。 ブール値の配列を用意する: 各インデックス i が「アルファベット(AS