一般的にはLongest common substring problemを解くことで判定できます。
解いた結果が空なら一致した部分がないことになります。
LONGEST COMMON SUBSTRING ALGORITHMに記載されているコードを利用すると、以下のような結果を得ることができます。
Python
1# LONGEST COMMON SUBSTRING ALGORITHM
2# https://www.bogotobogo.com/python/python_longest_common_substring_lcs_algorithm_generalized_suffix_tree.php
3def lcs(S,T):
4 m = len(S)
5 n = len(T)
6 counter = [[0]*(n+1) for x in range(m+1)]
7 longest = 0
8 lcs_set = set()
9 for i in range(m):
10 for j in range(n):
11 if S[i] == T[j]:
12 c = counter[i][j] + 1
13 counter[i+1][j+1] = c
14 if c > longest:
15 lcs_set = set()
16 longest = c
17 lcs_set.add(S[i-c+1:i+1])
18 elif c == longest:
19 lcs_set.add(S[i-c+1:i+1])
20
21 return lcs_set
22
23s = "メロスは激怒した。必ず、かの邪智暴虐じゃちぼうぎゃくの王を除かなければならぬと決意した。"
24t = "昨日、メロスは激怒した。"
25
26ret = lcs(s,t)
27print(ret) # {'メロスは激怒した。'}
28
29ret = lcs('リンゴ', 'りんご')
30print(ret) # set()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/03 02:16
退会済みユーザー
2021/11/03 02:28
2021/11/03 02:31