#はじめに
こんばんは.
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 さん,ありがとうございます.
==
などの比較結果は、True
かFalse
かになりますので、そのまま値を返しましょう。
class Solution:
def isPalindrome(self, x: int) -> bool:
return str(x) == str(x)[::-1]
これで,1行での記述ができましたね.
#おわりに
今回の問題は,工夫すれば1行でも記述できるみたいです.
今回書いたコードはGitHubにもあげておきます.