leetcode-7. Reverse Integer

题目链接:https://leetcode.com/problems/reverse-integer/description/

题目意思:

给一个整数,要求将这个整数反转过来

例如:

input:123456789

output:987654321

 

input:-98765400

output:-456789

思路:

1、先转换为字符串str,长度为len,然后遍历字符串,
2、如果str[0]=="-" 从str[len-1] -- str[1] 开始反转,否则从str[len-1] -- str[0]反转
3、遇到第一个非0的数,进行标记flag=true,如果flag==false 则丢弃,继续循环

注意:反转后的数可能会越界

此种做法需要了解的知识点:

1、int型转字符串
(1)String str = "" + i;
(2)String str = String.valueOf(i);
(3)String str = Integer.toString(i);
2、String转字符串
(1)int i = Integer.parseInt(str);
(2)int i = Integer.valueOf(str).intValue();
3、遍历一个字符串的每一个字母
(1)
for(int i = 0;i<str.length();i++){
	char ch = str.charAt(i);
}
(2)
char[] chs = str.toCharArray();
for(char ch : chs){
	
}
(3)
for(int i = 0;i<str.length();i++){
	String sunstr = str.substring(i,i+1);
}

 AC代码:

说实话,虽然想到了反转后的int数值可能会越界,但是没想到加个try/catch就可以通过。。。。。。。

class Solution {
    public int reverse(int x) {
        String str = "" + x;  //int转String
        String buffer = "";  //反转后的字符串
        Boolean flag = false; //判断0是否需要丢弃
        int begin = 0;   //循环开始位置(负数开始位置是1,整数是0)
        char[] chs = str.toCharArray(); //String转char
        int len = chs.length;
        if(chs[0]=='-'){
            begin = 1;
            buffer+="-";
        }
        for(int i = len-1;i>=begin; i--){
            if(chs[i]!='0'){
                flag = true;
            }
            if(!flag) continue;
            buffer+=chs[i];
        }
        int res = 0;
        try {
            res = Integer.parseInt(buffer);
        }catch (Exception e){
            e.getMessage();
        }
        return res;
    }
}

  

posted @ 2018-08-23 13:52  非我非非我  阅读(140)  评论(0编辑  收藏  举报