日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

判断一个字符串是否是由另2个字符串交错组成的

發布時間:2024/10/12 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判断一个字符串是否是由另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个字符串交错组成的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。