leetcode第七题(反向输出数字)及StringBuilder

题目:反向输出数字
eg.123->321 -123->-321 120->21

public int reverse(int x) {

        int tmp = Math.abs(x);      //取绝对值   

        long reverse=0;       

        while (tmp>0) {         

            reverse=reverse*10 + tmp%10;        

            if(reverse>Integer.MAX_VALUE) {      //解决溢出问题

                return 0;         

            }            

            tmp=tmp/10;     

        }      

        return (int)(x>0?reverse:-reverse);

 

    }


此方法:

temp:123

rev=0*10+123%10=3

temp:123/10=12

rev=3*10+12%10=32

temp:12/10=1

rev=32*10+1%10=321

解法二:用java自带的StringBuilder的reverse()方法
StringBuilder对象是动态对象,允许扩充它所封装的字符串中字符的数量
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
StringBuilder常用方法:
1、append(String str)/append(Char c):字符串连接
2、toString():返回一个与构建起或缓冲器内容相同的字符串
3、appendcodePoint(int cp):追加一个代码点,并将其转换为一个或两个代码单元并返回this
4、setCharAt(int i, char c):将第 i 个代码单元设置为 c(可以理解为替换)
5、insert(int offset, String str)/insert(int offset, Char c):在指定位置之前插入字符(串)
6、delete(int startIndex,int endIndex):删除起始位置(含)到结尾位置(不含)之间的字符串



public
static int reverse1(int x) {            

     int tmp = Math.abs(x);       

     StringBuilder sBuilder = new
StringBuilder();  

     sBuilder.append(tmp);    

     sBuilder = sBuilder.reverse(); 

     if(Long.parseLong(sBuilder.toString())>Integer.MAX_VALUE)
{       

           return 0;    

      }     


      return x>0?Integer.parseInt(sBuilder.toString()):-Integer.parseInt(sBuilder.toString());   

        }


你可能感兴趣的:(leetcode第七题(反向输出数字)及StringBuilder)