关于leetcode:Leetcode-PHP题解D120-830-Positions-of-Large-Groups

6次阅读

共计 708 个字符,预计需要花费 2 分钟才能阅读完成。

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;
    }
}

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

正文完
 0