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