[題解][LeetCode][Palindrome Number]

題目:

Determine whether an integer is a palindrome. Do this without extra space.

Some hints:

Could negative integers be palindromes? (ie, -1)

If you are thinking of converting the integer to string, note the restriction of using extra space.

You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case?

There is a more generic way of solving this problem.


題解:

【數值問題】

主體思路,int的最高最低位取出,並進行比較。

此題,細節較多,需要注意。

例如,while結束的條件並不是x已經只剩個位了,而是k爲0的時候(意即check過每一位了0)。

因爲100021這樣的數字,檢查過第一位和最後一位之後,減去這兩位,就只剩2了。會被誤判爲True



Code:

class Solution:
	# @return a boolean
	def isPalindrome(self, x):
		if x < 0:
			return False
	    
		k = 1
		while k * 10 <= x:
			k *= 10
		
		while (k > 0) and (x % 10 == x // k) :
			x -= x // k * k
			x //= 10
			k //= 100

		if k == 0:
			return True
		else:
			return False


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章