- Date : 2021.12.12(일)
- Time : 25분
- 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.
- 1 <= s.length <= 1000
- s contains lower-case English letters only.
- Input: s = "abbxxxxzzy"
- Output: [[3,6]]
- Explanation: "xxxx" is the only large group with start index 3 and end index 6.
def largeGroupPositions(self, s: str) -> List[List[int]]:
res = []
s += '0'
start = 0
for i in range(1,len(s)):
if s[i] != s[i-1]:
res.append([start,i-1])
start = i
return list(filter(lambda x: abs(x[0]-x[1]) >= 2, res))
: 같은문자의 연속적인 인덱스 구간을 구해서 그 중에 구간이 3이상이라면 그 구간을 return 하는 문제였다. 먼저 시작 인덱스를 0으로 잡아준다. 그리고 처음 인덱스의 문자와 그 다음 문자가 달라진다면 그 전 문자 인덱스를 한 그룹으로 저장해주고, 달라진 문자를 기준 인덱스로 다시 잡고 시작한다. 그리고 여기서도 large group을 판단하기 위해 filter
를 사용해주었다. 고차함수는 써도써도 어려워..