Pythonで1つの文字列を別の文字列に変換できるかどうかを確認します
2つの文字列sとtがあり、tが大文字であるとします。次の操作を実行して、sをtに変換できるかどうかを確認する必要があります。
- いくつかの小文字を大文字に変換します。
- すべての小文字を削除します。
したがって、入力がs ="fanToM"、t ="TOM"の場合、'o'を'O'に変更し、sから他のすべての小文字を削除してtにすることができるため、出力はTrueになります。
これを解決するには、次の手順に従います-
- n:=sのサイズ、m:=tのサイズ
- dp:=サイズ(m + 1)x(n + 1)の行列で、Falseで埋めます
- dp [0、0]:=True
- 範囲0からs-1のサイズのiの場合、do
- 0からtのサイズの範囲のjについては、
- dp [i、j]がTrueの場合、
- j<大文字のtとs[i]のサイズがt[j]と同じである場合、
- dp [i + 1、j + 1]:=True
- s [i]が大文字でない場合、
- dp [i + 1、j]:=True
- j<大文字のtとs[i]のサイズがt[j]と同じである場合、
- dp [i、j]がTrueの場合、
- 0からtのサイズの範囲のjについては、
- return dp [n、m]
例
理解を深めるために、次の実装を見てみましょう-
def solve(s,t): n = len(s) m = len(t) dp= [[False for i in range(m+1)] for i in range(n+1)] dp[0][0] = True for i in range(len(s)): for j in range(len(t)+1): if dp[i][j] == True: if j < len(t) and (s[i].upper() == t[j]): dp[i + 1][j + 1] = True if s[i].isupper()==False: dp[i + 1][j] = True return dp[n][m] s = "fanToM" t = "TOM" print(solve(s, t))
入力
"fanToM", "TOM"
出力
True
-
Pythonで文字列が英数字かどうかを確認するにはどうすればよいですか?
Python Stringクラスには、文字列に対して呼び出すことができるisalnum()というメソッドがあり、文字列が英数字のみで構成されているかどうかを通知します。次の方法で呼び出すことができます: >>> '123abc'.isalnum() True >>> '123#$%abc'.isalnum() False 同じ結果に正規表現を使用することもできます。アルファ数値を照合するには、正規表現 ^ [a-zA-Z0-9] + $を使用してre.match(regex、string)を呼び出すことができます。たとえば、
-
Pythonで部分文字列が別の文字列に含まれているかどうかを確認する方法
Pythonには、文字列が別の文字列のサブ文字列であるかどうかを検索するためのキーワード「in」があります。例 print('ello' in 'hello world') 出力 True サブストリングの最初のインデックスも必要な場合は、find(substr)を使用してインデックスを検索できます。このメソッドが-1を返す場合は、文字列に部分文字列が存在しないことを意味します。たとえば、 print("hello world".find('ello')) 出力 1 文字列「ハリーポッター:炎の