iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
0
自我挑戰組

Leetcode新手挑戰30天系列 第 4

#9 Palindrome Number - 繼續解

  • 分享至 

  • twitterImage
  •  

前情提要

昨天解完題後跑測試個案,發現負數的test case都跑不過,會出現這個錯誤:
Line 3: ValueError: invalid literal for int() with base 10: '-'
但我找不出來這行程式哪邊有問題,就在網路上查其他人的解法.

進入正題

找的時候我看到了這題的一個提示:

负数都不是回文数;

的確,因為輸入的條件是"整數"型態,負數肯定不會是回文數的
所以我在我的code前面加了兩行做判斷,變成這樣:

    def isPalindrome(self, x: int) -> bool:
        if x < 0 :
            return False
        inputlist = list(map(int, str(x)))
        k = 1
        if (len(inputlist) % 2) == 0 :
            for i in inputlist:
                k += 1
                if inputlist[i] != inputlist[-k] :
                    return False
                if i == (len(inputlist) // 2) :
                    return True
        else:
            for i in inputlist:
                k += 1
                if i == (len(inputlist) // 2 + 1) :
                    return True
                if inputlist[i] != inputlist[-k] :
                    return False

改成這樣之後跑負數的測試個案就正確了!所以我就很放心的submit出去.
然後就遇到了下一個問題
Line 20: IndexError: list index out of range
查到這有兩種可能:

1.list[index]index超出范围
2.list是一个空的 没有一个元素 进行list[0]就会出现该错误

透過測試個案測試確認過,如果是輸入"0"的話就會有這個錯誤
所以我就很笨的再加了兩行把0的狀況判斷出去

    def isPalindrome(self, x: int) -> bool:
        if x < 0 :
            return False
        elif x == 0 :
            return True
        inputlist = list(map(int, str(x)))
        k = 1
        if (len(inputlist) % 2) == 0 :
            for i in inputlist:
                k += 1
                if inputlist[i] != inputlist[-k] :
                    return False
                if i == (len(inputlist) // 2) :
                    return True
        else:
            for i in inputlist:
                k += 1
                if i == (len(inputlist) // 2 + 1) :
                    return True
                if inputlist[i] != inputlist[-k] :
                    return False

又臭又長的,submit出去之後還是出現一樣的error...Q.Q
看來一開始想到的解法還是有問題
先沉澱下,明天繼續

參考資料

9. Palindrome Number [easy] (Python)
IndexError: list index out of range的错误原因


上一篇
#9 Palindrome Number
下一篇
#9 Palindrome Number - 研究其他種解法
系列文
Leetcode新手挑戰30天31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言