Question:
In a string S of lowercase letters, these letters form consecutive groups of the same character.
For example, a string like S = "abbxxxxzyy" has the groups "a", "bb", "xxxx", "z" and "yy".
Call a group large if it has 3 or more characters. We would like the starting and ending positions of every large group.
The final answer should be in lexicographic order.
Example:
Input: "abbxxxxzzy"Output: [[3,6]]Explanation: "xxxx" is the single large group with starting 3 and ending positions 6.
Input: "abc"Output: []Explanation: We have "a","b" and "c" but no large group.Input: "abcdddeeeeaabbbcd"Output: [[3,5],[6,9],[12,14]]
Solution:
/*** @param {string} S* @return {number[][]}*/var largeGroupPositions = function(S) {let result = [];let arr = S.split('');let curIndex = 0;let curItem = arr[0];let j = 1 ;for (let i = 1; i< arr.length ; i ++ ){if(arr[i]!=curItem){if(j >= 3) {result.push([curIndex, i-1])}curItem = arr[i];curIndex = i;j = 1;}else{j ++ ;if(i===arr.length-1 && j >=3){result.push([curIndex, i])}}}return result;};
