* 我们正常的单词不会有连续两个以上相同的字母,如果出现连续 *三个* 或以上的字母,那么这是一个抽搐词。
* 现在给一个单词,从左至右求出所有抽搐字母的起始点和结束点。
* eg:
* 1.给出 str = "whaaaaatttsup", 返回 [[2,6],[7,9]]。
* 现在给一个单词,从左至右求出所有抽搐字母的起始点和结束点。
* eg:
* 1.给出 str = "whaaaaatttsup", 返回 [[2,6],[7,9]]。
* 2.给出 str = "whooooisssbesssst", 返回 [[2,5],[7,9],[12,15]]。
private int[][] TwitchWords(string s)
{
List<int[]> res = new List<int[]>();
for (int i = 0; i < s.Length - 2;) //连续三个字母相同,所以终止条件为i < s.Length - 2;
{
int[] range = new int[2];
range[0] = i;
while (true)
{
i++;
if (i == s.Length || s[i - 1] != s[i]) //两个条件都需要跳出,而且两个条件的位置不能互换(互换会数组越界)
break;
}
range[1] = i - 1; //因为 while 循环中 即使不相同i也自加了一次
if (range[1] - range[0] > 1) //差大于1 说明至少连续3个字母相同
res.Add(range);
}
return res.ToArray();
}