Day2

作者: wendy_要努力努力再努力 | 来源:发表于2017-10-31 09:38 被阅读0次
  1. 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 

整数反转,考虑负数,考虑空间复杂度,不能用字符串反转


  1. 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为步长生成的数.
从右到左读取字符串,当出现字符大于等于右边最大的字符时,都是相加,只有出现小字符时,进行减法。


(一大早上起来刷题,脑子都是浆糊,看两道题都花了一个小时,以后要加快速度了,哈哈哈,急功近利的我,又心急了!! )

相关文章

网友评论

      本文标题:Day2

      本文链接:https://www.haomeiwen.com/subject/vdmvpxtx.html