一个镜像数字是指一个数字旋转180度以后和原来一样(倒着看)。例如,数字"69","88",和"818"都是镜像数字。
写下一个函数来判断是否这个数字是镜像的。数字用字符串来表示。
样例
样例1:
输入 : "69"
输出 : true
样例 2:
输入 : "68"
输出 : false
class Solution {
public:
/**
* @param num: a string
* @return: true if a number is strobogrammatic or false
*/
bool isStrobogrammatic(string &num) {
// write your code here
//cout<<reserve(num)<<endl;
if(num.size() == 1)
{
switch(num[0])
{
case '2':
return false;
case '3':
return false;
case '4':
return false;
case '5':
return false;
case '7':
return false;
case '8':
return true;
}
}
int flag = 0;
string tmp = reserve(num,flag);
if(flag == 1)
return false;
//cout<<tmp<<endl;
reverse(tmp.begin(), tmp.end());
//cout<<tmp<<endl;
return tmp == num;
}
string reserve(string nums, int& flag)
{
string ret;
for(int i = 0; i < nums.size(); i++)
{
if(nums[i] == '9')
ret = ret + '6';
else if(nums[i] == '6')
ret = ret + '9';
else
{
ret = ret + nums[i];
if(nums[i] == '2' || nums[i] == '3' || nums[i] == '4' || nums[i] == '5' || nums[i] == '7' )
flag = 1;
}
}
return ret;
}
};