Pythonで文字列がラピンドロームかどうかを判定する方法はいくつかあります。以下にいくつかの方法を示します。
方法1: スライスを使用して比較する方法
def is_lapindrome(string):
length = len(string)
mid = length // 2
if length % 2 == 0:
first_half = sorted(string[:mid])
second_half = sorted(string[mid:])
else:
first_half = sorted(string[:mid])
second_half = sorted(string[mid + 1:])
return first_half == second_half
# 使用例
print(is_lapindrome("abcde")) # False
print(is_lapindrome("abccba")) # True
方法2: 辞書を使用して文字の出現回数を比較する方法
from collections import Counter
def is_lapindrome(string):
length = len(string)
mid = length // 2
if length % 2 == 0:
first_half = Counter(string[:mid])
second_half = Counter(string[mid:])
else:
first_half = Counter(string[:mid])
second_half = Counter(string[mid + 1:])
return first_half == second_half
# 使用例
print(is_lapindrome("abcde")) # False
print(is_lapindrome("abccba")) # True
方法3: ループを使用して比較する方法
def is_lapindrome(string):
length = len(string)
mid = length // 2
if length % 2 == 0:
first_half = {}
second_half = {}
for i in range(mid):
first_half[string[i]] = first_half.get(string[i], 0) + 1
second_half[string[mid + i]] = second_half.get(string[mid + i], 0) + 1
else:
first_half = {}
second_half = {}
for i in range(mid):
first_half[string[i]] = first_half.get(string[i], 0) + 1
second_half[string[mid + 1 + i]] = second_half.get(string[mid + 1 + i], 0) + 1
return first_half == second_half
# 使用例
print(is_lapindrome("abcde")) # False
print(is_lapindrome("abccba")) # True
上記のコード例では、与えられた文字列がラピンドロームであるかどうかを判定するための3つの方法を示しました。いずれの方法も、文字列を前半と後半に分割し、それぞれの部分を比較することで判定しています。スライス、辞書、ループを使用して実装しています。これらの方法はいずれも効率的であり、与えられた文字列がラピンドロームであるかどうかを正確に判定できます。
これらのコード例を参考にして、ラピンドロームの文字列判定に役立てていただければ幸いです。