Pythonで文字列が別の文字列の接尾辞(サフィックス)かどうかを判定する方法
問題の概要
2つの文字列 s と t が与えられたとき、s が t の接尾辞(サフィックス)であるかどうかを判定します。
例えば、s = "ate"、t = "unfortunate" の場合、"unfortunate" という文字列は "ate" で終わっているため、出力は True になります。
解決手順
この問題は、以下の手順で解くことができます。
s_lenにsの長さ、t_lenにtの長さを格納するs_lenがt_lenより大きい場合、sの方が長いため接尾辞になり得ず、Falseを返す- i を 0 から
s_len - 1までループし、両方の文字列を末尾から順に1文字ずつ比較する - 1文字でも一致しない場合は
Falseを返す - すべての文字が一致した場合は
Trueを返す
実装例
以下のコードで、実際の動作を確認してみましょう。
def solve(s, t):
s_len = len(s)
t_len = len(t)
if (s_len > t_len):
return False
for i in range(s_len):
if(s[s_len - i - 1] != t[t_len - i - 1]):
return False
return True
s = "ate"
t = "unfortunate"
print(solve(s, t))入力
"ate", "unfortunate"
出力
True
より簡単な方法:endswith() メソッド
Pythonでは、文字列型が標準で提供している endswith() メソッドを使うことで、同じ処理を1行で実現できます。
s = "ate" t = "unfortunate" print(t.endswith(s)) # True
endswith() は、対象の文字列が引数に指定した文字列で終わっているかどうかを判定し、その結果をブール値(True / False)で返します。実際の開発では、車輪の再発明を避けるため、この組み込みメソッドを使用するのが最もシンプルで推奨される方法です。
計算量について
どちらの方法でも、時間計算量は O(len(s))、空間計算量は O(1) となります。s の長さ分だけ比較を行うため、非常に効率的な処理です。
-
Swiftで文字列が別の文字列を含んでいるか確認する方法
Swiftである文字列に別の文字列が含まれているかどうかを確認するには、2つの異なる文字列が必要です。1つは検索対象となる文字列、もう1つはその中に特定の文字列が含まれているかを調べる元となる文字列です。 ここでは、確認したい文字列を「point」、全体の文字列を「TutorialsPoint」、そして別の文字列として「one two three」を使用して説明します。Playgroundでこれらの文字列を使って実際に確認してみましょう。 この確認は、以下に示す2つの方法で行うことができます。まずは3つの異なる文字列を作成します。 var completeStr1 = Tutorials po
-
Pythonで文字列が指定した接尾辞(サフィックス)で終わっているかどうかを確認する方法
endswith()メソッドを使う方法Pythonでは、文字列クラスに用意されている endswith() メソッドを使うことで、文字列が特定の接尾辞(サフィックス)で終わっているかどうかを簡単に確認できます。このメソッドは、検索したい接尾辞の文字列を引数として受け取り、文字列オブジェクトに対して呼び出します。以下のように使用します。string = C:/Users/TutorialsPoint1/~.py print(string.endswith(.py))実行結果:Trueこの例では、ファイルパスの文字列が .py という拡張子で終わっているため、True が返されます。もし終わってい