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