Positions of Large Groups - Array - Easy - LeetCode
💻 coding

Positions of Large Groups - Array - Easy - LeetCode

1 min read 251 words
1 min read
ShareWhatsAppPost on X
  • 1The problem involves identifying large groups of consecutive characters in a string, defined as groups with three or more characters.
  • 2The function returns the start and end indices of each large group in increasing order by the start index.
  • 3Examples illustrate that strings without large groups return an empty list, while strings with large groups return their respective intervals.

AI-generated summary · May not capture all nuances

Key Insight
AskGif

"The problem involves identifying large groups of consecutive characters in a string, defined as groups with three or more characters."

Positions of Large Groups - Array - Easy - LeetCode

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".

A group is identified by an interval [start, end], where start and end denote the start and end indices (inclusive) of the group. In the above example, "xxxx" has the interval [3,6].

A group is considered large if it has 3 or more characters.

Return the intervals of every large group sorted in increasing order by start index.

Example 1:

Input: s = "abbxxxxzzy" Output: [[3,6]] Explanation: "xxxx" is the only large group with start index 3 and end index 6. Example 2:

Input: s = "abc" Output: [] Explanation: We have groups "a", "b", and "c", none of which are large groups. Example 3:

Input: s = "abcdddeeeeaabbbcd" Output: [[3,5],[6,9],[12,14]] Explanation: The large groups are "ddd", "eeee", and "bbb". Example 4:

Input: s = "aba" Output: []

Constraints:

1 <= s.length <= 1000 s contains lower-case English letters only.

public class Solution {
 public IList<IList<int>> LargeGroupPositions(string s) {
 var result = new List<IList<int>>();
 if(s.Length==0){
 return result;
 }
 char last = s[0];
 int count = 1;
 int start = 0;
 for(int i=1;i<s.Length;i++){
 if(s[i]==last){
 count++;
 }
 else{
 if(count>=3){
 var data = new List<int>();
 data.Add(start);
 data.Add(i-1);
 result.Add(data);
 }
 last = s[i];
 count = 1;
 start = i;
 }
 }
 
 if(count>=3)
 {
 var data = new List<int>();
 data.Add(start);
 data.Add(s.Length-1);
 result.Add(data);
 }
 
 return result;
 }
}

Time Complexity: O(n)

Space Complexity: O(1)

Enjoyed this article?

Share it with someone who'd find it useful.

ShareWhatsAppPost on X

sumitc91

Published on 26 September 2020 · 1 min read · 251 words

Part of AskGif Blog · coding

You might also like