Pythonで文字列の母音がアルファベット順になっているかどうかを確認する方法
文字列 s が与えられたとき、その中に含まれる母音がアルファベット順に並んでいるかどうかを判定する問題です。
例えば、入力が s = "helloyou" の場合、含まれる母音は e、o、o、u であり、これらはすべてアルファベット順に並んでいるため、出力は True になります。
解法の考え方
この問題は、以下の手順で解くことができます。
- 比較用の変数 character を、ASCIIコード64の文字('@')で初期化します。この文字はすべての英字よりも小さい値を持つため、最初に出現する母音との比較に利用できます。
- 文字列 s の各文字について、次の処理を繰り返します。
- s[i] が母音('A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u')のいずれかである場合:
- s[i] が直前に記録した母音(character)よりも小さい場合は、母音がアルファベット順になっていないことを意味するため、
Falseを返します。 - それ以外の場合は、character を s[i] に更新し、次の母音との比較に備えます。
- s[i] が直前に記録した母音(character)よりも小さい場合は、母音がアルファベット順になっていないことを意味するため、
- s[i] が母音('A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u')のいずれかである場合:
- すべての文字を確認しても問題が検出されなければ、
Trueを返します。
それでは、以下の実装例を見て、理解を深めましょう。
サンプルコード
def solve(s): character = chr(64) for i in range(len(s)): if s[i] in ['A','E','I','O','U','a','e','i','o','u']: if s[i] < character: return False else: character = s[i] return True s = "helloyou" print(solve(s))
入力
"helloyou"
出力
True
-
文字列が空かどうかをチェックするPythonプログラム
この記事では、与えられた文字列が空であるかどうかを判定するための解決策とアプローチについて解説します。 問題文 文字列が入力として与えられたとき、その文字列が空(空文字列)であるかどうかを判定する必要があります。 Pythonの文字列はイミュータブル(変更不可)な性質を持っているため、文字列に対して何らかの操作を行う際には注意して扱う必要があります。 ここでは、上記の問題を解決するための2つのアプローチを紹介します。 len()メソッドを使用する方法 等価演算子(==)を使用する方法 アプローチ1:len()メソッドを使う方法 len()関数で文字列の長さを取得し、その長さが0であれば空文
-
与えられた文字列がヘテログラムかどうかを判定するPythonプログラム
本記事では、与えられた文字列がヘテログラム(Heterogram)であるかどうかを判定するPythonプログラムを解説します。 ヘテログラムとは、同じアルファベットが2回以上出現しない単語・フレーズ・文のことを指します。アルファベット26文字をすべて使用する「パングラム」とは対照的な概念で、両者は以下のように区別されます。 ヘテログラム:どの文字も繰り返して現れない パングラム:アルファベットのすべての文字を使用する 具体例 文字列が abc def ghi の場合: これはヘテログラムです(繰り返されるアルファベットがない) 文字列が abc bcd dfh の場合: これはヘテログラム