将一个字符串在重复字符之间拆分

8

我想拆分任何给定的字符串,基于重复的字符。

例如,如果我输入字符串abcaaabbc,我希望输出与以下相等的字符串数组:[abca, a, ab, bc]。每次字符重复时,我都想开始一个新的字符串。

当然,使用循环可以完成此操作,但我想知道是否可以使用String.split()方法来实现。如果可以-正则表达式将是什么?


无法理解您的问题。您能给出其他例子吗? - Rohit Jain
2个回答

13

将输入字符串进行分词,其中前一个字符(向前查找(?<=(.)))与后一个字符相同(向后查找(?=\\1)),并使用\1捕获(.)

    String str = "abcbabaaabbc";
    String regex = "(?<=(.))(?=\\1)";        
    System.out.println(Arrays.toString(str.split(regex)));

2
@SwapnilS:将字符串进行标记化,其中前一个字符(向后查找(?<=))与下一个字符(向前查找(?=))相同。\1捕获(.) - Prince John Wesley

0
从性能角度来看,我建议使用循环。它的时间复杂度为O(n)。众所周知,string.split(regex)的速度较慢。最近我曾尝试用它替代循环,结果发现它的时间复杂度是O(n^2),而循环只有O(n)。
这里适用于K.I.S.S原则(保持简单)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接