- Palindrome Number
Determine whether an integer is a palindrome. Do this without extra space.
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
return False if x<0
a = x
x_1 = 0
while a:
x_1 = a%10 + x_1*10
a = a/10
return x_1 == x
整数反转,考虑负数,考虑空间复杂度,不能用字符串反转
- Roman to Integer
Given a roman numeral, convert it to an integer.
**Note:
**Input is guaranteed to be within the range from 1 to 3999.
罗马数字采用七个罗马字母作数字:
I(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。
class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
digits = {'I':1,'X':10,"C":100,'M':1000,'V':5,'L':50,'D':500}
maxDigits = 1
sum = 0
for i in xrange(len(s)-1,-1,-1):
if digits[s[i]] >= maxDigits:
maxDigits = digits[s[i]]
sum += digits[s[i]]
else:
sum -= digits[s[i]]
return sum
python3只有range()等价于python2.7的xrange();range(x,y,-1)代表在区间[x,y)以-1为步长生成的数.
从右到左读取字符串,当出现字符大于等于右边最大的字符时,都是相加,只有出现小字符时,进行减法。
(一大早上起来刷题,脑子都是浆糊,看两道题都花了一个小时,以后要加快速度了,哈哈哈,急功近利的我,又心急了!! )
网友评论