回文数

题目链接——回文数
在这里插入图片描述

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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;
}
}
}
};

题解:

反转整数——反转整数

1
同反转整数,在此基础上定义临时变量,不要更改原来的x。

罗马数字转整数

题目链接——罗马数字转整数
在这里插入图片描述代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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;
}


};

题解:

1
2
3
4
5
6
7
8
9
10
定义ret为最后的结果

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