欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

力扣网——7.整数反转

程序员文章站 2022-07-15 10:30:23
...

7整数反转.

题目链接:力扣网

题目描述:

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
力扣网——7.整数反转
这本来是一道简单的题目,但是由于本人的刷题数量较少,整数反转.

题目描述:

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
力扣网——7.整数反转
这本来是一道简单的题目,但是由于本人的刷题数量较少,使用的方法就是一些比较老套的办法,但是易于理解。
方法一
1)将整数转化成字符数字,使用的方法是:
char[] ch = Integer.toString(x).toCharArray();
2)新建一个数组,进行逆序存储上述数组中的元素(或者直接将第一个元素和最后一个元素交换的方法),难点是原数组中的第一个元素。
3)如果第一个元素为“-”,那么就需要将新建数组的长度减一。
4)将新数组中的元素转化成整型即可。如果原来的数据为负,则给新数据乘以负一即可

代码如下

package com.company.NewCode;

public class reverse {
    public static void main(String[] args) {
        System.out.println(reverse(9646324351));
    }
    public static long reverse(int x){
        String str = Integer.toString(x);
        char[] ch =str.toCharArray();
        char[] ch1 = new char[ch.length];
        char[] ch2 = new char[ch.length-1];
        int flag = 0,j=0;
        for (int i=ch.length-1;i>0;i--){
            if (ch[0]=='-'){
                ch2[j]=ch[i];
            }else{
                ch1[j] = ch[i];}
                j++;
            }
        long result =0;
        if (ch[0]=='-'){
            String s = new String(ch2);
             result = Long.valueOf(s)*(-1);
        }else{
            ch1[ch.length-1]=ch[0];
            String s=new String (ch1);
            result = Long .valueOf(s);
        }
        if(result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) return 0;
        else return (int)result;
    }
}

方法二

直接用取余的方法进行输出即可
代码如下:
class Solution {
    public int reverse(int x) {
        long res = 0;
        int flag = -1;
        if(x < 0) x = -x;//将负数转化成正数运算,设置标志符即可。
        else 
            flag = 1;
        while(x != 0){
            res = res * 10 + x % 10;//对输入的数据取余运算,然后依次扩大十倍即可。
            x /= 10;//将原来的数据缩小十倍
        }
        res *= flag;
        if(res > Integer.MAX_VALUE || res < Integer.MIN_VALUE)//判断是否越界,如果越界直接输出0即可。
           return 0;
        else return (int)res;
    }
}

现在看到改进的代码如此的简单,但是刚开始做的时候怀疑都没带脑子。所以一定要多加练习。