회문 번호

#9.회문 번호

문제 설명



정수 x가 주어지면 true가 회문 정수인 경우 x를 반환합니다.

정수는 앞으로 읽을 때와 거꾸로 읽을 때 회문입니다.
  • 예를 들어 121는 회문이지만 123는 회문이 아닙니다.

  • 예 1

    Input: x = 121
    Output: true
    Explanation: 121 reads as 121 from left to right and from right to left.
    


    예 2

    Input: x = -121
    Output: false
    Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
    


    예 3

    Input: x = 10
    Output: false
    Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
    


    설명



    給定一個 x 的整數,如果是回文 則返回 true ,否則 false
    回文的定義是不論從頭或從尾開始,讀起來是一樣的,例如 1211221 是回文,但 123 不是

    해결책



    這題要考慮的地方是回文的長度,偶數長度的回文分割為左右兩等分時比較好判斷,奇數長度的回文最後會留下間的數中,它不需與帔其其題目最後的 Follow up 還提到能否在不將數字轉換成字串的情況下來解,依照前述的分析及題意,此題可使用算術運算子(산술 연산자)來解.

    一開始先過濾一些特定的條件
  • 判斷 x 是否為 0,如果是 return true
  • 判斷 x 是否小於 0 或者為 10 的倍數,如果是 return false

  • 接著執行 while 迴圈直到條件成立,最後 return x 與擷取出的 reverseNum 是否相等.

    public bool IsPalindrome(int x)
    {
        if (x == 0)
            return true;
    
        if (x < 0 || x % 10 == 0)
            return false;
    
        int reverseNum = 0;
    
        while (x > reverseNum)
        {
            reverseNum = reverseNum * 10 + x % 10;
            x /= 10;
        }
    
        return x == reverseNum || x == reverseNum / 10;
    }
    



    참조



    LeetCode Solution

    GitHub Repository


    글 읽어주셔서 감사합니다 🌷 🌻 🌼

    마음에 드셨다면 주저말고 하트 꾸욱 눌러주세요❤️
    또는 내 Leetcode 솔루션에서 좋아요를 클릭하세요.
    또는 내 GitHub ⭐ 팔로우
    또는 커피를 사주세요 ⬇️ 감사합니다.

    좋은 웹페이지 즐겨찾기