如何删除大字符串数据中的重复字符串?

时间:2010-10-15 13:51:06

标签: java blackberry

e.g。我收到的数据像“vivartvivartpandey” 我想输出像“vivartpandey” 只有一件事是固定的,数据将像string1 + string1 + string2 或者像string1 + string2(没有重复) 但是string1和string2都是可变的。

那么如何识别string1并删除重复的string1?

3 个答案:

答案 0 :(得分:2)

我们需要更多的约束才能实现这一目标。例如,如果你得到“ssssabcd”,就无法确定string1是“ssss”还是“ss”(即重复发生时)

答案 1 :(得分:0)

使用这样的正则表达式:

String s = "vivaryvivartypadney";

Matcher m = Pattern.compile("(.*)\g(-1)(.*)").matcher(s);

if (m.find())
    String prefix = m.group(1), suffix = m.group(2);

regexp中的第一个括号定义一个组,\ g(-1)是对先前匹配组的相对引用。现在,如果您的字符串类似于“vivavivavivavivaChile”,那么您将得到一个匹配,但仅仅是因为“第一次”重复,而不是更长的第二次(如其他答案所提到的)。如果你愿意,我会留给你把它放在循环中以获得最长的匹配。

答案 2 :(得分:0)

我试图创建一个简单的解决方案。

    int index = 0;
    for (int i = 0; i <= text.length() / 2; i++) {
        String string1 = text.substring(0, i);
        String string2 = text.substring(i, 2 * i);
        if (string1.equals(string2)) {
            index = i;
        }
    }
    System.out.println("without duplicate: " + text.substring(index));