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

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

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

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据