判断一个字符串是否是由另2个字符串交错组成的
生活随笔
收集整理的這篇文章主要介紹了
判断一个字符串是否是由另2个字符串交错组成的
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
現在有3個字符串s1,s2,s3,我們需要判斷s3是否是由s1和s2交錯組成的。對于三個字符串A,B,C。我們稱C由A和B交錯組成當且僅當C包含且僅包含A,B中所有字符,且對應的順序不改變
例如s1="abc",s="1234d",s3="ab1234dc",那么s3是由s1和s2交錯組成的,如果s3="ab1234cd",則s3不是由s1和s2交錯組成的。
public boolean isjiaocuo(String s1, String s2, String s3) {boolean[][] table = new boolean[s1.length()+1][s2.length()+1];for(int i=0; i<s1.length()+1; i++)for(int j=0; j< s2.length()+1; j++){if(i==0 && j==0)table[i][j] = true;else if(i == 0)table[i][j] = ( table[i][j-1] && s2.charAt(j-1) == s3.charAt(i+j-1));else if(j == 0)table[i][j] = ( table[i-1][j] && s1.charAt(i-1) == s3.charAt(i+j-1));elsetable[i][j] = (table[i-1][j] && s1.charAt(i-1) == s3.charAt(i+j-1) ) || (table[i][j-1] && s2.charAt(j-1) == s3.charAt(i+j-1));}return table[s1.length()][s2.length()];}這段代碼的解釋如下:
dp表代表當s1在i處是交錯的同時s2在j處是交錯的s3在i+j處是否是交錯的。
如果s1和s2在當前位置是空,s3也是空,則我們視為true;如果s1是空,s2之前的位置是交錯的而且s2在當前位置和s3的當前位置字符是一樣的,則視為true;反之s2為空時情況是一樣的。
現在考慮s1和s2都不為空的情況。當我們從i-1,j到達i,j處時,如果i-1,j處是交錯的而i處與當前的s3一致,則視為true;
當我們從i,j-1到達i,j處時,如果i,j-1處是交錯的而j處與當前的s3一致,則視為true;
參考https://leetcode.com/discuss/11694/my-dp-solution-in-c
轉載于:https://www.cnblogs.com/jfwu/p/5633715.html
總結
以上是生活随笔為你收集整理的判断一个字符串是否是由另2个字符串交错组成的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7.0 没有netstat
- 下一篇: iOS进阶之多线程