检查java中拆分字符串的顺序

时间:2012-09-24 12:48:12

标签: java algorithm

我有一个主字符串“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 没有

1 个答案:

答案 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.