0
1

More than 3 years have passed since last update.

【LeetCode】就活に向けたコーディングテスト対策 #03

Last updated at Posted at 2021-05-28

はじめに

こんばんは.
M1就活生がLeetCodeから,easy問題を中心にPythonを用いて解いていきます.

↓では,解いた問題のまとめを随時更新しています.
まとめ記事

問題

今回解いたのは,難易度easyから 問題9のPalindrome Number です.
問題としては,整数xが与えられたとき,xが回文整数であれば,TrueをそうでなければFalseを返すというもの.

Example 1:

Input: x = 121
Output: true

Example 2:

Input: x = -121
Output: false

Example 3:

Input: x = 10
Output: false

Example 4:

Input: x = -101
Output: false

書いたコード

とりあえず,思いついたままに書いてみました.

class Solution:
    def isPalindrome(self, x: int) -> bool:
        reverse_x = int(str(x)[::-1])
        if x == reverse_x:
            return True
        else:
            return False

問題7のReverse Integer 同様,整数xをstr型に変換し,反転したものを再びint型とするアイデアを使いました.xと反転した値が等しければTrue,そうでなければFalseを返します.

しかし,このままではエラーが出てしまいました.マイナスの値が入力の場合,反転したあとint型に直せないためですね.

ValueError: invalid literal for int() with base 10: '121-'
    reverse_x = int(str(x)[::-1])
Line 3 in isPalindrome (Solution.py)
    ret = Solution().isPalindrome(param_1)
Line 26 in _driver (Solution.py)
    _driver()
Line 37 in <module> (Solution.py)

反転する値をstr型として保持し,入力する値xをstr型に変換することで,解決しました.今回は,比較を行い,bool型で返すのでこれで良さそうです.

class Solution:
    def isPalindrome(self, x: int) -> bool:
        reverse_x = str(x)[::-1]
        if str(x) == reverse_x:
            return True
        else:
            return False

追記(2021/05/28:10:05)

以下のフィードバックを頂き,コードを修正しました.
@shiracamus さん,ありがとうございます.

==などの比較結果は、TrueFalse かになりますので、そのまま値を返しましょう。

class Solution:
    def isPalindrome(self, x: int) -> bool:
        return str(x) == str(x)[::-1]

これで,1行での記述ができましたね.

おわりに

今回の問題は,工夫すれば1行でも記述できるみたいです.

今回書いたコードはGitHubにもあげておきます.

前回 次回

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1