比较两个字符串,如果它们向后相等

时间:2015-11-17 14:02:45

标签: c

让我们说我们有两个输入。一个是123,一个是321.现在,这两个应该返回True。

另一个例如。 543与345。

这是我走了多远:

int a,i=0;

printf("condition value");
scanf("%d",&i);

printf("comparison value");
scanf("%d",&a);

a=a%10;
i=a/10;

if(a==i){
   printf("\nTrue");
}

有没有人对如何解决这个问题有任何想法?

2 个答案:

答案 0 :(得分:7)

如果您想知道一个字符串是否与另一个字符串的反向匹配,只需逐个字符地进行比较。即使保证所有字符都是数字,但更容易来解决字符串域中的问题。

即使有一些数论理论技巧可以为固定大小的整数提供封闭形式的解决方案,但首先将字符串解析为int将比仅仅字符比较循环慢。 / p>

通常,您可以通过利用输入的限制来简化您的代码,但看起来这不是其中一种情况。

答案 1 :(得分:0)

鉴于OP希望根据此comment

检查整数

只需反转其中一个数字的数字

一次删除x中最不重要的数字。使用该值构建x的反向。注意x"的反转范围。宽度超过unsigned的范围。

使用unsigned来避免签名问题。

unsigned long long unsigned_rev(unsigned x) {
  unsigned long long rev = 0;
  while (x) {
    rev = rev*10 + x%10;
    x /= 10;
  }
  return rev;
}