728x90
605 - Can Place Flowers

풀이
앞 / 현재 / 뒤 0 -> 현재 위치에 꽃 심기 가능 => 꽃 심기(`flowerbed[i] = 1`)
- `i == 0 || flowerbed[i - 1] == 0`: 맨 앞이면 왼쪽 자동 통과 / 아니면 왼쪽 0이어야 함
- `i == flowerbed.length - 1 || flowerbed[i + 1] == 0`: 맨 끝이면 오른쪽 자동 통과 / 아니면 오른쪽 0이어야 함
flowerbed[i] == 0 &&
(i == 0 || flowerbed[i - 1] == 0) &&
(i == flowerbed.length - 1 || flowerbed[i + 1] == 0))
코드
class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {
int len = flowerbed.length;
int cnt = 0;
for (int i = 0; i < len; i++) {
if (flowerbed[i] == 0 &&
(i == 0 || flowerbed[i - 1] == 0) &&
(i == len - 1 || flowerbed[i + 1] == 0)) {
flowerbed[i] = 1;
cnt++;
if (cnt >= n) return true;
}
}
return cnt >= n;
}
}
345 - Reverse Vowels of a String

풀이
왼쪽에서 모음 찾고 오른쪽에서 모음 찾고 서로 swap
-> `lt = 0`, `rt = arr.length - 1`
- `while (lt < rt && !isVowel(arr[lt])) lt++`: lt가 가리키는 문자 모음 아닐때까지 계속 오른쪽 이동
- `while (lt < rt && !isVowel(arr[rt])) rt--`: rt가 가리키는 문자 모음 아닐때까지 계속 왼쪽 이동
모음 검사
문자열 안에 c가 있으면 그 위치 index 반환 / 없으면 -1 반환 => -1이면 모음 아님
static boolean isVowel(char c) {
return "aeiouAEIOU".indexOf(c) != -1;
}
코드
class Solution {
static boolean isVowel(char c) {
return "aeiouAEIOU".indexOf(c) != -1;
}
public String reverseVowels(String s) {
char[] arr = s.toCharArray();
int lt = 0;
int rt = arr.length - 1;
while (lt < rt) {
while (lt < rt && !isVowel(arr[lt])) lt++;
while (lt < rt && !isVowel(arr[rt])) rt--;
char tmp = arr[lt];
arr[lt] = arr[rt];
arr[rt] = tmp;
lt++;
rt--;
}
return new String(arr);
}
}
151 - Reverse Words in a String


풀이
단어 순서 뒤집기
- `trim()`: 앞뒤 공백 제거
- `split("\\s+")`: 공백 1개 이상 기준으로 분리
코드
class Solution {
public String reverseWords(String s) {
StringBuilder sb = new StringBuilder();
String[] str = s.trim().split("\\s+");
for (int i = str.length - 1; i >= 0; i--) {
sb.append(str[i]);
if (i != 0) sb.append(" ");
}
return sb.toString();
}
}
출처
LeetCode 75 - Study Plan - LeetCode
Ace Coding Interview with 75 Qs
leetcode.com
728x90
반응형