整数反转
(牛客网—牛客题霸算法篇—NC175)
题目描述
给定一个32位的有符号整数num,将num中的数字部分反转,最后返回反转的结果.
要求
1.只反转数字部分,符号位部分不反转
2.反转后整数num超过 32 位的有符号整数的范围 [−231, 231 − 1] ,返回 0
3.不允许存储 64 位整数(有符号或无符号,即C++不能使用long long ,Java不能使用long等)
思路
Java实现
将num转化成字符串,使用Sting.valueOf(int x)方法
之后定义一个StringBuffer,用于反转。
需要注意的是字符串的charAt()函数中第一个第一个字符的下标为0,而不是最后一个字符的下标为0。(要与数组区别开)
代码实现
使用长整型变量
import java.util.*;
public class Solution {
public int reverse (int num) {
String str = String.valueOf(num);
if(str.length()>9)
return 0;
long renum=0;
boolean flag=true;
if(num==0)
return 0;
if(num<0){
num=-num;
flag=false;
}
while(num!=0){
renum=renum*10+num%10;
num=num/10;
}
if(flag==false){
return (int)-renum;
}
return (int)renum;
}
}
不使用长整型变量
import java.util.*;
public class Solution {
public int reverse (int num) {
String str = String.valueOf(num);
if(str.length()>9)
return 0;
StringBuilder sb=new StringBuilder();
if(str.charAt(0)!='-'){
for (int i = str.length()-1; i >= 0; i--) {
sb.append(str.charAt(i));
}
}else {
sb.append("-");
for (int i = str.length()-1; i >= 1; i--) {
sb.append(str.charAt(i));
}
}
return Integer.parseInt(sb.toString());
}
}