LintCode 29---交叉字符串
Posted cnmoti
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LintCode 29---交叉字符串相关的知识,希望对你有一定的参考价值。
public class Solution { /** * @param s1: A string * @param s2: A string * @param s3: A string * @return: Determine whether s3 is formed by interleaving of s1 and s2 */ public boolean isInterleave(String s1, String s2, String s3) { if(s1.length() + s2.length() != s3.length()) return false; boolean[][] matched= new boolean[s1.length()+1][s2.length()+1]; matched[0][0]= true; for(int i=1;i<= s1.length(); i++){ if(s3.charAt(i-1) == s1.charAt(i-1)) matched[i][0] = true; } for(int j= 1;j<= s2.length();j++){ if(s3.charAt(j-1) == s2.charAt(j-1)) matched[0][j] = true; } for(int i=1;i<=s1.length(); i++){ char c1 = s1.charAt(i-1); for(int j = 1;j<= s2.length();j++){ int i3 = i+ j; char c2 = s2.charAt(j- 1); char c3 = s3.charAt(i3 -1); if(c1 == c3) matched[i][j] =matched[i][j] || matched[i-1][j]; if( c2== c3) matched[i][j] = matched[i][j] || matched[i][j-1]; } } return matched[s1.length()][s2.length()]; } }
以上是关于LintCode 29---交叉字符串的主要内容,如果未能解决你的问题,请参考以下文章