LeetCode刷题(11)【简单】回文数&罗马数字转整数(C++)

2023-05-12 21:36:40 浏览数 (1)

回文数

题目链接——回文数

代码示例

代码语言:javascript复制
class Solution {
public:
    bool isPalindrome(int x) {
    if(x < 0)
    {
        return false;
    }
    else
    {
        int ret = 0;
        int temp = x;
        while(temp)
        {
            if (ret > INT_MAX / 10 || ret < INT_MIN / 10)
			{
				return 0;
			}
            ret = ret*10   temp% 10;
            temp /= 10;
        }
        if(ret == x)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    }
};

题解:

代码语言:javascript复制
同反转整数,在此基础上定义临时变量,不要更改原来的x。

反转整数——反转整数

罗马数字转整数

题目链接——罗马数字转整数

代码示例:

代码语言:javascript复制
class Solution {
public:

int GetNum(char ch)
    {
        switch(ch)
        {          
        case 'I':
            return 1;
        case 'V':    
            return 5;
        case 'X':
            return 10;
        case 'L':
            return 50;
        case 'C':
            return 100;
        case 'D':
            return 500;
        case 'M':
            return 1000;
        default:
            return 0;
        }
    }

    int romanToInt(string s) {
        int ret = 0;
        int num =0;
        int nextnum = 0;
        for(int i =0;i<s.size();i  )
        {
            num = GetNum(s[i]);
            if(i == s.size()-1)
            {
                ret  = num;
            }
            else
            {
                nextnum = GetNum(s[i 1]);
                if(num<nextnum)
                {
            
                    ret -= num;
                }
                else
                {
                    ret  = num;
                }
            }
           
        }
        return ret;
    }


};

题解:

代码语言:javascript复制
定义ret为最后的结果

通过观察罗马数字,得到规律,多个字母拼接的罗马数字,
从左到右依次取每个字母,得到对应的数值,和挨着的下一个字母对应的数值,
如果当前字母对应数值小于下一个字母对应的数字,
那么当前字母对应的数值就变成负的,反之不做改变,
不断加到ret中。
......
其中,到了最后一个字母就不找下一个字母了,直接将它对应的数值加到ret中,
返回结果ret。

0 人点赞