8

我想获取任何给定的字符串并根据重复字符对其进行拆分。

例如,如果我要输入 string abcaaabbc,我想输出一个字符串数组,等于:[abca, a, ab, bc]。每次一个字符重复,我想开始一个新的字符串。

当然,可以使用循环执行此操作,但我想知道是否可以使用该String.split()方法实现它。如果是这样 - 那会RegEx是什么?

4

2 回答 2

13

标记输入字符串,其中前一个字符(look-behind (?<=(.)))与下一个字符(look-ahead (?=\\1))相同并\1捕获(.)

    String str = "abcbabaaabbc";
    String regex = "(?<=(.))(?=\\1)";        
    System.out.println(Arrays.toString(str.split(regex)));
于 2012-12-29T06:52:47.703 回答
0

从性能的角度来看,我会坚持使用循环。它在 O(n) 时间内运行。众所周知, string.split(regex) 很慢。我最近用它代替了循环,发现与 O(n) 循环相比,它是 O(n^2)。

KISS 校长在这里工作

于 2013-11-20T18:53:05.780 回答