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

浙公网安备 33010602011771号