我想获取任何给定的字符串并根据重复字符对其进行拆分。
例如,如果我要输入 string abcaaabbc
,我想输出一个字符串数组,等于:[abca, a, ab, bc]
。每次一个字符重复,我想开始一个新的字符串。
当然,可以使用循环执行此操作,但我想知道是否可以使用该String.split()
方法实现它。如果是这样 - 那会RegEx
是什么?
标记输入字符串,其中前一个字符(look-behind (?<=(.))
)与下一个字符(look-ahead (?=\\1)
)相同并\1
捕获(.)
。
String str = "abcbabaaabbc";
String regex = "(?<=(.))(?=\\1)";
System.out.println(Arrays.toString(str.split(regex)));
从性能的角度来看,我会坚持使用循环。它在 O(n) 时间内运行。众所周知, string.split(regex) 很慢。我最近用它代替了循环,发现与 O(n) 循环相比,它是 O(n^2)。
KISS 校长在这里工作