Python , . S[:-1] S S[:n] S, n.
, C A B, C[:-1] A B[:-1], A[:-1] B. , C A B, C + 'X' A + 'X' B, A B + 'X'.
, .
f(i, j) = true, s1[:i] s2[:j] , s3[:(i+j)] f(i,j) = false .
f(0,0) = true
f(i,0) = f(i-1, 0) if s3[i-1] == s1[i-1]
f(0,j) = f(0, j-1) if s3[j-1] == s2[j-1]
f(i,j) = true if s3[i+j-1] = s1[i-1] and f(i-1, j)
f(i,j) = true if s3[i+j-1] = s2[j-1] and f(i, j-1)
f(i,j) = false.
Java- . , :
for (int i = 0; i <= s1.length(); ++i)
for (int j = 0; j <= s2.length(); ++j)
isInter[i][j] = (i == 0 && j == 0)
|| (i > 0 && s1.charAt(i-1) == s3.charAt(i+j-1) && isInter[i-1][j])
|| (j > 0 && s2.charAt(j-1) == s3.charAt(i+j-1) && isInter[i][j-1]);