Pythonで文字列の前半と後半が「似ている」かどうかを判定するプログラム
長さが偶数である文字列 s が与えられたとします。この文字列を同じ長さの前半と後半に分割し、前半を a、後半を b と呼びます。
2つの文字列が「似ている(alike)」とは、大文字・小文字を問わず、含まれる母音(a, e, i, o, u)の数が一致していることを指します。この条件をもとに、a と b が似ているかどうかを判定するのが本記事の目的です。
問題の例
たとえば入力が s = "talent" の場合、出力は True になります。これは、文字列を分割すると前半が "tal"、後半が "ent" となり、どちらも母音が1つ・子音が2つで構成されているためです。
解決のアプローチ
この問題は、次の手順で解くことができます。
aに文字列sの前半を代入するbに文字列sの後半を代入するカウンタ
count1とcount2を 0 で初期化するa内の各文字cについて、cが母音であればcount1を 1 増やすb内の各文字cについて、cが母音であればcount2を 1 増やすcount1とcount2が等しければtrueを返し、そうでなければfalseを返す
Pythonでの実装例
それでは、実際の実装を見てみましょう。
def solve(s):
vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']
a = s[:len(s)//2]
b = s[len(s)//2:]
count1 = 0
count2 = 0
for c in a:
if c in vowels:
count1 += 1
for c in b:
if c in vowels:
count2 += 1
return count1 == count2
s = "talent"
print(solve(s))入力
"talent"
出力
True
コードのポイント
この実装では、スライス記法 s[:len(s)//2] と s[len(s)//2:] を使うことで、文字列を簡単に前半と後半に分割しています。また、母音リストには大文字と小文字の両方を含めているため、大文字小文字が混在する文字列でも正しく判定できます。
計算量は文字列の長さを n とすると O(n) となり、非常に効率的なアルゴリズムです。文字列操作の基礎を学ぶのに適した練習問題といえるでしょう。
-
指定された文字列がキーワードであるかどうかを確認するPythonプログラム
この記事では、指定された文字列がPythonのキーワード(予約語)であるかどうかを判定する方法について解説します。問題の概要与えられた文字列が、Pythonにおけるキーワードであるかどうかを確認する必要があります。キーワードとは、言語によって特別な用途のために予約されている単語であり、変数名や関数名などの識別子として使用することはできません。例えば「if」「for」「while」「def」などはすべてキーワードです。これらの名前を変数に使おうとすると、構文エラーが発生します。解決策:keywordモジュールの活用Pythonには標準ライブラリとしてkeywordモジュールが用意されており、これ
-
Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法
本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列