检查一个数字是否是另一个的镜像(反面)

时间:2016-01-10 14:58:02

标签: c function

给出一个带两个数字的函数:Mirror(num 1,num 2)

如何检查num2是否为数字1的镜像? IN C

例如,如果num 1 = 523 num2 = 325则返回1:它的镜像否则返回0 更多例子 num1 = 566 num2:566返回false num1 = 500 num2 = 005 return true

两个数字的长度未知

2 个答案:

答案 0 :(得分:1)

您可以计算反向,然后将结果与其他数字进行比较。

int mirror(int n,int m)
{
  int rev=0;
  while(n>0)
    {
      rev*=10;
      rev+=n%10;
      n/=10;
    }

  return rev==m ? 1 : 0;
}

答案 1 :(得分:0)

对于像290和92这样的输入不起作用。这里290反向将是92,如果我们通过反转num来检查它将使它成为镜像。这是错的。

我们可以通过确保我们将这些数字中的较小数字反转然后检查例如对于29和920,29较小将给出rev = 92,这与920不同,因此是正确的答案。

int mirror(int s, int l){
// swap the numbers so that s is always smaller than l
    if (s > l) {
        int temp = s;
        s = l;
        l = temp;
    }

    int rev=0;
    while(s > 0){
        rev*=10;
        rev+=n%10;
        n/=10;
    }

    return rev==l ? 1 : 0;
}