{ "question_id": 202236, "question_title": "字符串交错组成", "question_content": "对于三个字符串A,B,C。我们称C由A和B交错组成当且仅当C包含且仅包含A,B中所有字符,且对应的顺序不改变。请编写一个高效算法,判断C串是否由A和B交错组成。\n给定三个字符串A,B和C,及他们的长度。请返回一个bool值,代表C是否由A和B交错组成。保证三个串的长度均小于等于100。\n测试样例:\n\"ABC\",3,\"12C\",3,\"A12BCC\",6\n返回:true", "difficulty": "简单", "answer_id": 126531, "answer_content": "\n\n```\n import java.util.*;\n \npublic class Mixture {\n public boolean chkMixture(String A, int n, String B, int m, String C, int v) {\n // write code here\n return chkMixture(A,B,C,A.length()-1,B.length()-1,C.length()-1);\n }\n public static boolean chkMixture(String A,String B, String C,int i,int j,int k){\n if(k == 0){\n return true;\n }\n if(i == 0){\n if(B.charAt(j) == C.charAt(k)){\n return chkMixture(A,B,C,0,j-1,k-1);\n }else{\n return false;\n }\n }\n if(j == 0){\n if(A.charAt(i) == C.charAt(k)){\n return chkMixture(A,B,C,i-1,0,k-1);\n }else{\n return false;\n }\n }\n boolean res1 = false;\n boolean res2 = false;\n if(A.charAt(i) == C.charAt(k)){\n res1 = chkMixture(A,B,C,i-1,j,k-1);\n }\n if(B.charAt(j) == C.charAt(k)){\n res2 = chkMixture(A,B,C,i,j-1,k-1);\n }\n return res1||res2;\n }\n}\n```\n\n", "tag_name": "java", "java": "public class Mixture {\n\tpublic boolean chkMixture(String A, int n, String B, int m, String C, int v) {\n\t\treturn chkMixture(A,B,C,A.length()-1,B.length()-1,C.length()-1);\n\t}\n\tpublic static boolean chkMixture(String A,String B, String C,int i,int j,int k){\n\t\tif(k == 0){\n\t\t\treturn true;\n\t\t}\n\t\tif(i == 0){\n\t\t\tif(B.charAt(j) == C.charAt(k)){\n\t\t\t\treturn chkMixture(A,B,C,0,j-1,k-1);\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(j == 0){\n\t\t\tif(A.charAt(i) == C.charAt(k)){\n\t\t\t\treturn chkMixture(A,B,C,i-1,0,k-1);\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tboolean res1 = false;\n\t\tboolean res2 = false;\n\t\tif(A.charAt(i) == C.charAt(k)){\n\t\t\tres1 = chkMixture(A,B,C,i-1,j,k-1);\n\t\t}\n\t\tif(B.charAt(j) == C.charAt(k)){\n\t\t\tres2 = chkMixture(A,B,C,i,j-1,k-1);\n\t\t}\n\t\treturn res1||res2;\n\t}\n}", "topic_link": "https://bbs.csdn.net/topics/600469979", "status": 0, "keywords": "算法高阶,字符串匹配,算法问题选编,朴素字符串匹配算法", "license": "csdn.net", "notebook": { "java": "https://codechina.csdn.net/csdn/csdn-daily-code/-/jupyter/master/data/notebook/answer/ipynb/java/37.ipynb?type=file" } }