์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/LeetCode 150

[Java] 125. Valid Palindrome

2023. 8. 26. 12:21

๋ฌธ์ œ ํŒŒ์•…

๋ชจ๋“  ๋Œ€๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ ํ›„, ์ˆซ์ž์™€ ์•ŒํŒŒ๋ฒณ์ด ์•„๋‹Œ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•œ ๋ฌธ์ž๊ฐ€ ๋’ค๋กœ ์ฝ์—ˆ์„๋•Œ์™€ ์•ž์œผ๋กœ ์ฝ์—ˆ์„๋•Œ๊ฐ€ ๊ฐ™์œผ๋ฉด 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) ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋‹ˆ, ํƒ์ƒ‰ ๋ฒ”์œ„๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ์—๋Š” ์ž˜ ๋– ์˜ฌ๋ ค์„œ ์ ์šฉ ์‹œ์ผœ ํ•ด๊ฒฐํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/LeetCode 150' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Java] 209. Minimum Size Subarray Sum
    • [Java] 167. Two Sum II - Input Array Is Sorted
    • [Java] 55. Jump Game
    • [Java] 122. Best Time to Buy and Sell Stock 2
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”