๋ฌธ์ ํ์
๋ชจ๋ ๋๋ฌธ์๋ฅผ ์๋ฌธ์๋ก ๋ณํ ํ, ์ซ์์ ์ํ๋ฒณ์ด ์๋ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ ๋ฌธ์๊ฐ ๋ค๋ก ์ฝ์์๋์ ์์ผ๋ก ์ฝ์์๋๊ฐ ๊ฐ์ผ๋ฉด palindrome ์ด๋ผ๊ณ ํ๋ค.
palindrome ์ด ๋ง์ผ๋ฉด true๋ฅผ, ์๋๋ฉด false๋ฅผ ๋ฐํํ๋ผ
ํ์ด
1๏ธโฃ StringBuilder ์ฌ์ฉ ํ์ด
๐ก ๋ ์ค๋ฅธ Idea
๋จผ์ , ๊ณต๋ฐฑ๊ณผ ๋ฌธ์ ํน์ ์ซ์๊ฐ ์๋ ๊ฒ๋ค์ ์ ๊ฑฐํด์ ๋ถ์ด๋ ์์ ์ด ํ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ , ์ญ์์ผ๋ก ๋์ดํ ๋ฌธ์์ ๋์ผํ์ง ํ์ธํด์ palindrome ์ธ์ง ํ์ธํ๋ฉด ๋ ๊ฒ์ด๋ค.
class Solution {
public boolean isPalindrome(String s) {
StringBuilder sb = new StringBuilder();
char[] arr = s.toLowerCase().toCharArray();
for (char ch : arr) {
if (isAlpha(ch) || isNum(ch)) {
sb.append(ch);
}
}
return sb.toString().equals(sb.reverse().toString());
}
private boolean isAlpha(char ch) {
if ('a' <= ch && ch <= 'z') {
return true;
} else {
return false;
}
}
private boolean isNum(char ch) {
if ('0' <= ch && ch <= '9') {
return true;
} else {
return false;
}
}
}
์ํ๋ฒณ์ธ์ง ์ฒดํฌํ๋ ๋ฉ์๋๋ isAlpha()
๊ทธ๋ฆฌ๊ณ ์ซ์์ธ์ง ์ฒดํฌํ๋ ๋ฉ์๋๋ isNum()
์ผ๋ก ๋ถ๋ฆฌํ์๋ค.
๊ทธ๋ฆฌ๊ณ StringBuilder
๋ฅผ ์ฌ์ฉํ๋ฉด reverse()
๋ผ๋ ๋ฉ์๋๋ก ์ญ์์ผ๋ก ์ ๋ ฌํ ์ ์์ด์ ํธ๋ฆฌํ๊ฒ palindrome ์ธ์ง ์ฒดํฌํ ์ ์์๋ค.
๊ฒฐ๊ณผ
2๏ธโฃ ํฌํฌ์ธํฐ ๋ฐฉ์ ํ์ด
์๋ฌด๋๋, ํฌํฌ์ธํฐ ์ ํ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ํฌํฌ์ธํฐ๋ก๋ ํ์ด๋ณด๊ธฐ๋ก ํ๋ค.
์ซ์์ ์ํ๋ฒณ๋ง ๋จ๊ฒจ๋๊ณ palindrome ์ ์ฒดํฌํ๋ ๊ณผ์ ์ ํฌ ํฌ์ธํฐ ๋ฐฉ์์ผ๋ก ํ์ธํด๋ณด๋ฉด ๋๋ค.
public boolean isPalindrome(String s) {
StringBuilder sb = new StringBuilder();
char[] arr = s.toLowerCase().toCharArray();
for (char ch : arr) {
if (isAlpha(ch) || isNum(ch)) {
sb.append(ch);
}
}
String[] strs = sb.toString().split("");
int left = 0, right = strs.length - 1;
while (left < right) {
if (!strs[left++].equals(strs[right--])) {
return false;
}
}
return true;
}
private boolean isAlpha(char ch) {
if ('a' <= ch && ch <= 'z') {
return true;
} else {
return false;
}
}
private boolean isNum(char ch) {
if ('0' <= ch && ch <= '9') {
return true;
} else {
return false;
}
}
๊ฒฐ๊ณผ
์ฒซ๋ฒ์งธ ๋ฐฉ์๋ณด๋ค๋ ์ฝ๊ฐ ์คํ์๊ฐ์ด ๊ธธ์ด์ก์ง๋ง, ํต๊ณผํ ์ ์์๋ค.
๐ ํ๊ณ
ํฌ ํฌ์ธํฐ ๋ฐฉ์์ ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ๊ฐ ํ์ด๋ณด๋, ๋ค์ํ ์ํฉ์์ ์ ์ฉํ ์ ์๊ฒ ๋ ๊ฒ ๊ฐ๋ค.
์๊ฐ ๋ณต์ก๋๋ฅผ O(N) ์ผ๋ก ๋ง๋ค ์ ์์ผ๋, ํ์ ๋ฒ์๊ฐ ๋ง์ ๊ฒฝ์ฐ์๋ ์ ๋ ์ฌ๋ ค์ ์ ์ฉ ์์ผ ํด๊ฒฐํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.