//回文数
//1.
bool isPalindrome(int x)
{
if (x < 0)
return false;//因为负数不可能是一个回文数
long int a, b = 0;//创建变量,注意变量范围
a = x;//存储a值
//逆序求值,如果相当说明是回文数
while (a != 0)
{
b = b * 10 + a % 10;
a = a / 10;
}
if (x == b)
return true;
else
return false;
}
思路2和解析:
//2.
bool isPalindrome(int x)
{
char s[20];
int i;
sprintf(s, "%d", x);//将字符类型转换为整型
int l = strlen(s);//计算长度
for (i = 0; i < l / 2; i++)
{
if (s[i] != s[l - i - 1])//看对应位上的数字是否相当,如果是奇数位,中间位不用管
{
return false;//发现不相当就不是回文数,反之就是
}
}
return true;
}
题目3:13.罗马数字转整数
思路和解析:
//罗马数字转整数
int getHash(char c) //传入字符
{
switch (c) //根据传入字符选择对应的值
{
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(char* s)
{
int ret = 0;//创建个变量用来存储值
for (int i = 0; s[i]; i++)
{
if (getHash(s[i]) < getHash(s[i + 1]))
{
ret += (-getHash(s[i]));//小于的时候,比如IV,I<V,IV是4,就是V-I
}
else//反之就是大于,不存在特殊情况,直接加上去就行
{
ret += getHash(s[i]);
}
/* ret += getHash(s[i]) < getHash(s[i + 1]) ? -getHash(s[i]) : getHash(s[i]);*/
}
return ret;
}