题7

题目

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

c#

思路

首先是确保x的范围为32 位的有符号整数,如果不满足或x本身为0,则直接返回0;再设置一个flag标记x的正负性,用正数的方式考虑问题,利用一个while循环,将x的个位、十位、百位…上的数字依次求出,并设置一个y值来计算x反向的取值,这里y初始定义时为long型,若定义成int型可能会超出范围,导致精度缺失(这里我不是很能理解),最后返回所得值,也要保证返回值为32 位的有符号整数。

public class Solution {
    public int Reverse(int x) {
        if(x>2147483647||x<-2147483648||x==0)
                    return 0;
      int flag=1;
      long y=0;
      if(x<0)
      {
          flag=0;
          x=-x;
      }
      y=x%10;
     while(x/10!=0)
     {
         x=x/10;
         y=y*10+x%10;
     }
      while(y<=2147483647&&y>=-2147483648)
       {
          if(flag>0)
            return (int)y;
         else
            return (int)(-y);
      }
     return 0;
    }
}

题7_第1张图片

你可能感兴趣的:(题7)