美文网首页Leetcode题解-PHP版
Leetcode PHP题解--D120 830. Positi

Leetcode PHP题解--D120 830. Positi

作者: skys215 | 来源:发表于2019-12-10 18:18 被阅读0次

    D120 830. Positions of Large Groups

    题目链接

    830. Positions of Large Groups

    题目分析

    给定一个字符串,返回相同字母连续出现次数超过3次的始末值。

    解决思路

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

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

    最终代码

    <?php
    class 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;
        }
    }
    

    若觉得本文章对你有用,欢迎用爱发电资助。

    相关文章

      网友评论

        本文标题:Leetcode PHP题解--D120 830. Positi

        本文链接:https://www.haomeiwen.com/subject/evgggctx.html