1.判断回文数
【题目】
【解析】
数组加双指针;将数字拆分成数组并用双指针,一个从前到后,一个从后到前
【代码】
bool isPalindrome(int x)
{
if(x < 0 )
{
//小于零的都不是
return false;
}
if(x == 0)
{
//等于0是回文数字
return true;
}
int num[11]; //10^11次方 大于INTMAX 2147483647
int cnt = 0;
while(x>0)
{
num[cnt] = x%10;
x /= 10;
cnt++;
}
//双指针索引检查
int indexLeft = 0;
int indexRight = cnt - 1;
while(indexLeft < indexRight)
{
if(num[indexLeft] != num[indexRight])
{
//不相等返回
return false;
}
indexLeft++;
indexRight--;
}
return true;
}
2.罗马数字转整数
【题目】
【代码】C
int romanToInt(char * s){
char *word=s;
int roman_num,sum=0;
while(*word!='\0'){
switch(*word){
case'I':roman_num=1;
if(*(word+1)=='V'||*(word+1)=='X')
roman_num=-1;
break;
case'V':roman_num=5;
break;
case'X':roman_num=10;
if(*(word+1)=='L'||*(word+1)=='C')
roman_num=-10;
break;
case'L':roman_num=50;
break;
case'C':roman_num=100;
if(*(word+1)=='D'||*(word+1)=='M')
roman_num=-100;
break;
case'D':roman_num=500;
break;
case'M':roman_num=1000;
break;
}
sum+=roman_num;
word++;
}
return sum;
}