Twitch Words

     * 我们正常的单词不会有连续两个以上相同的字母,如果出现连续 *三个* 或以上的字母,那么这是一个抽搐词。
     * 现在给一个单词,从左至右求出所有抽搐字母的起始点和结束点。
     * 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();
    }

猜你喜欢

转载自blog.csdn.net/wenbooboo/article/details/81035745