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; } }