共计 708 个字符,预计需要花费 2 分钟才能阅读完成。
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;
}
}
若感觉本文章对你有用,欢送用爱发电赞助。
正文完