e.g。我收到的数据像“vivartvivartpandey” 我想输出像“vivartpandey” 只有一件事是固定的,数据将像string1 + string1 + string2 或者像string1 + string2(没有重复) 但是string1和string2都是可变的。
那么如何识别string1并删除重复的string1?
答案 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));