一道面试题。很常见却也有点新意,特记录如下:
题目:
将整型变量 x 中数字左右翻转后存到另外一个整型变量 y中,例如 x = 12345 时,y为 54321,x = ‐123 时,y为‐321。其中 x 的个位不为 0。
分析:常见的翻转是对字符串进行,此处是对int数进行。将x的每位拆出来,放入队列中。经过这个过程就能知道x有多少位,再从队列中取出数据并乘以pow(10,位数)既可以得到需要的y。下面是代码:
#include<iostream>
#include<math.h>
#include<queue>
using namespace std;
void rotate(int x, int &y){
int n = abs(x);
int count=0;//记录位数
queue<int> q;//存储x的每一位
while(n){
q.push(n%10);
n=n/10;
++count;
}
while(!q.empty()){
y+=q.front()* pow(10,count-1);
--count;
q.pop();
}
if(x<0)y*=-1;
}
void main(){
int x=-123456789;
int y=0;
rotate(x,y);
cout << y<<endl;
}