这里使用一种较笨的方法,适合初学者理解。
主要的过程就是用取余操作得到最后一位,用除法操作得到一共有几位。具体程序如下:
class Solution {
public:
bool isPalindrome(int x) {
if(x<0)
return false;
int n = 0;
long sum = 0;
int pos=x;
//得到位数和余数
vector<int> y (32,0);
for(int i = 0; pos!= 0; ++i )
{
n++;
y[i] = pos%10;
pos /= 10;
}
//得到新数
for(int j = 0; j < n; j++ )
{
sum *= 10;
sum = sum + y[j];
}
printf("%d",sum);
if(sum == x)
return true;
return false;
}
};
class Solution {
public:
int addDigits(int num) {
int sum = -1;//进入循环
vector<int> s;
int flag = 0;
while(sum == -1 || sum > 9)
{
sum = 0;
while(num != 0)
{
int a = num % 10;
num /= 10;
s.push_back(a);
}
for(int i = flag; i < s.size(); i++)
{
sum += s[i];
}
flag = s.size();
num = sum;
printf("%d ",num);
}
return sum;
}
};