Programming/LeetCode

Programming/LeetCode

[Dart] 345. Reverse Vowels of a String

1. 문제https://leetcode.com/problems/reverse-vowels-of-a-string/description/?envType=study-plan-v2&envId=leetcode-75    2. 요구사항1) 주어진 문자열 모음만 뒤집어서 문자열을 반환한다.2) 모음은 a, e, i, o, u이며, 대소문자 구분 없이 나타난다.2) 다른 문자는 원래 위치에 그대로 남아 있어야 한다.   3. 핵심 아이디어1) 투 포인터 사용 문자열의 맨 앞과 맨 끝에서부터 두 개의 포인터를 사용하여 각각 모음을 찾는다.왼쪽 포인터는 모음을 찾을 때까지 오른쪽으로 이동하고, 오른쪽 포인터는 모음을 찾을 때까지 왼쪽으로 이동한다. 두 포인터가 모음을 찾으면 두 포인터끼리 문자를 서로 교환한다.교환 후에는..

Programming/LeetCode

[Dart] 242. Valid Anagram

1. 문제https://leetcode.com/problems/valid-anagram/?envType=study-plan-v2&envId=top-interview-150    2. 요구사항1) 두 개의 문자열 s와 t가 있다.2) t가 s의 애너그램이면 true를 반환하고, 아니면 false를 반환한다.3) 애너그램은 두 문자열이 같은 문자를 같은 개수만큼 가지고 있지만, 순서는 다른 경우를 말한다.    3. 핵심 아이디어1) List에 알파벳이 나온 횟수 저장 알파벳 소문자 a부터 z의 각 문자의 등장 횟수를 저장할 List를 생성한다. s문자열을 순회하며 각 문자의 개수를 증가한다. t문자열도 순회하며 각 문자의 개수를 감소한다. 리스트 배열에 문자가 남아있는지, 남아있지 않은지로 애너그램을 판별..

Programming/LeetCode

[Dart] 228. Summary Ranges

1. 문제 https://leetcode.com/problems/summary-ranges/description/?envType=study-plan-v2&envId=top-interview-150   2. 요구사항1) 정렬된 정수 배열 nums가 주어진다.2) 연속된 숫자들을 하나의 범위로 묶어 문자열 형태로 반환한다.3) 출력은 오름차순으로 정렬된 문자열 리스트이다.4) 빈 배열일 경우, 빈 리스트 []를 반환한다.   3. 핵심 아이디어1) 배열을 순회하며 연속적인 숫자인지 확인배열을 순회하며 연속적인 숫자를 찾아야 한다. 만약 연속적이지 않은 숫자를 만나거나 배열의 마지막 숫자에 도달하면,지금까지 추적해온 범위의 시작 숫자부터 현재 숫자까지를 문자열로 만들어 결과 리스트에 저장한다. 새로운 연속 범..

Programming/LeetCode

[Dart] 219. Contains Duplicate II

1. 문제https://leetcode.com/problems/contains-duplicate-ii/?envType=study-plan-v2&envId=top-interview-150  2. 요구 사항1) 정수 배열 nums와 정수 k가 주어진다.2) nums에는 서로 다른 i, j 인덱스가 있고, abs(i - j) 를 만족하면 true를 반환한다.3) 조건에 맞지 않을 경우에는 false를 반환한다.   3. 핵심 아이디어1) 슬라이딩 윈도우 + Set 슬라이딩 윈도우는 최근 k개의 값만 저장하는 것이 목표이다. nums 배열을 순회하면서, 최근 k개 이내의 값을 Set에 저장한다. Set는 중복을 허용하지 않기 때문에, 값이 이미 들어있으면 중복이라는 뜻이다.k거리 이내에서 중복이 발생한 것이기..