D120 830. Positions of Large Groups

题目链接

830. Positions of Large Groups

题目剖析

给定一个字符串,返回雷同字母间断呈现次数超过3次的始末值。

解决思路

我采纳的是,先放进数组,间断则递增完结的下标。若遇到不同字母,则先判断上一个字母的起点下标减起始下标是否小于3则删除,大于等于3则保留。

在for循环外再判断一次最初一对下标是否也符合要求。因为之前是在当遇到不同字母时判断的,若测试样例中只呈现了同一个字符,那么就进不去判断长度的代码中。

最终代码

<?phpclass Solution {    /**     * @param String $S     * @return Integer[][]     */    function largeGroupPositions($S) {        $largeGroup = [[0,0]];        $S = str_split($S);        $prev = "";        $index = 0;        foreach($S as $k => $v){            $cur = $largeGroup[$index];            if($v == $prev){                $cur[1]++;                $largeGroup[$index] = $cur;            }            else{                if($cur[1]-$cur[0]<2){                    $largeGroup[$index] = [$k,$k];                }                else{                    $index++;                    $largeGroup[] = [$k, $k];                }            }                        $prev = $v;        }        if($largeGroup[$index][1]-$largeGroup[$index][0]<2){            unset($largeGroup[$index]);        }        return $largeGroup;    }}

若感觉本文章对你有用,欢送用爱发电赞助。