D120 830. Positions of Large Groups
题目链接
830. Positions of Large Groups
题目剖析
给定一个字符串,返回雷同字母间断呈现次数超过3次的始末值。
解决思路
我采纳的是,先放进数组,间断则递增完结的下标。若遇到不同字母,则先判断上一个字母的起点下标减起始下标是否小于3则删除,大于等于3则保留。
在for循环外再判断一次最初一对下标是否也符合要求。因为之前是在当遇到不同字母时判断的,若测试样例中只呈现了同一个字符,那么就进不去判断长度的代码中。
最终代码
<?phpclass 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; }}
若感觉本文章对你有用,欢送用爱发电赞助。