Leetcode PHP題解--D120 830. Positions of Large Groups

D120 830. Positions of Large Groups

題目連接

830. Positions of Large Groupsphp

題目分析

給定一個字符串,返回相同字母連續出現次數超過3次的始末值。數組

解決思路

我採用的是,先放進數組,連續則遞增結束的下標。若遇到不一樣字母,則先判斷上一個字母的終點下標減起始下標是否小於3則刪除,大於等於3則保留。測試

在for循環外再判斷一次最後一對下標是否也符合要求。由於以前是在當遇到不一樣字母時判斷的,若測試樣例中只出現了同一個字符,那麼就進不去判斷長度的代碼中。.net

最終代碼

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

若以爲本文章對你有用,歡迎用愛發電資助。code

相關文章
相關標籤/搜索