我有一个主字符串“parent”,它等于a,b,c,d,e,f
另一个字符串“B”等于c,d,e,f,a,b,它是通过在某个点上分割String main而形成的
另一个字符串“C”,它等于e,f,a,b,c,d或a,c,b,f,d,e再次通过在某一点拆分String main或随机形成
输入:字符串B,字符串C和主字符串
如果字符串C也在某个时刻被分割,则输出应为true,否则为NO
输入值:
例1
B:{c,d,e,f,a,b}
C:{e,f,a,b,c,d}
例2
B:{c,d,e,f,a,b}
C:{a,c,b,f,d,e}
预期产值:
例1
是的
示例2 没有
答案 0 :(得分:1)
好的,这个解决方案可能不是最快的,但它可以完成任务:
1)如果字符串长度不同,则B不能是B分裂的有效重组
2)如果字符串A + A包含B,则它是有效的分割。
public class fast {
/**
* @param args
*/
public static void main(String[] args) {
String a[] = {"lalawup","wuplala","short","1234567"};
for (int i = 1; i < a.length; i++) {
System.out.println( compare(a[0],a[i]));
}
}
private static boolean compare(String a, String b) {
if (a.length()==b.length()) {
String longs= a+a;
if (longs.contains(b)) {
return true;
}
}
return false;
}
}
您尝试做什么:查看您尝试比较的字符串,并尝试找到匹配的位置。通过连接两次A,您可以形成一个包含所有序列的字符串,可以通过将环分割到任意位置来形成。现在您只需要查看A中是否包含任意分割的字符串B.