Java教程

算法5分钟|如何实现整数的数字反转【逆序输出法】

本文主要是介绍算法5分钟|如何实现整数的数字反转【逆序输出法】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

导读概述

本章节分三篇

1、【如何实现整数的数字反转-逆序输出法】   

2、【如何实现整数的数字反转-首尾交换法】   

3、【如何实现整数的数字反转-数学思维升级法】   

    本文分享的是第一篇【逆序输出法】实现,其它两篇请关注后文,文章内容以通俗易懂的漫画形式呈现给大家~

数组逆序输出图解:

小扩展:数组的特点 1.数组容量固定不变。 2.需在创建数组时指定,使用连续的物理空间在存取数据 。 3.可以通过下标在O(1)的时间复杂度下读取数据。

本道题用到数组的特性,想对数组有更深入的理解,请点击 算法5分钟|浅入浅出【数组】一文,里面有细致的分享。

Code基本解法及编码实现:

/***
* 题目:整数反转
* 思路:暴力解法-逆序输出
* 1.整数转字符串,再转字符数组
* 2.反向遍历字符数组,并将元素存储到新数组中
* 3.将新数组转成字符串,再转成整数输出
** 注意事项:
* 边界问题
* 数组索引越界
* 数值溢出边界:溢出则返回0
* 细节问题
* 首位不为0
* 符号处理
* @param x 指定整数
* @return 反转后的整数,或0
*/
public  int reverse(int x){
//边界值
 if(Integer.MIN_VALUE==x){
    return 0;
 }
 int sign = x>0?1:-1;//记录符号位
 int data = x>0?x:x*sign;//无论正负都当正数处理

// 1.整数转字符串,再转字符数组
 char[] oldChar = Integer.valueOf(data).toString().toCharArray();
// 2.反向遍历字符数组,并将元素存储到新数组中
 char[] newChar = new char[oldChar.length];
 for(int i=0;i<oldChar.length;i++){//遍历原始数组
    //将原始字符数据 返回遍历给新的newChar数组
    newChar[i]=oldChar[oldChar.length-1-i];
 }
 //3.将newChar新数组转成字符串,再转成整数输出
 long newLong = Long.valueOf(String.valueOf(newChar));
 //数值越界:溢出则返回0
 int reverse = newLong>Integer.MAX_VALUE?0:(int)newLong;
 //符号还原:符号*正数  返回反转后的结果
 return sign*reverse;
}

执行效果

/**执行效果 demo 主方法
* @param args
*/
public static void main(String[] args) {
int[] array = {123,-321,726380,Integer.MAX_VALUE,Integer.MIN_VALUE};
for (int arr:array){
  int result = reverse(arr);
  System.out.println("原整数值:"+arr+"||反转输出==>"+result);
 }
}

运行结果:

输出结果:
原整数值:123||反转输出==>321
原整数值:-321||反转输出==>-123
原整数值:726380||反转输出==>83627
原整数值:2147483647||反转输出==>0
原整数值:-2147483648||反转输出==>0

想对复杂度有更深入的理解,请点击【干货|算法复杂度分析看这一篇就够了】一文,里面有细致的分享。

耗时

注:题目来源:

Leetcode 7: https://leetcode-cn.com/problems/reverse-integer/

• 后记 •

本系列算法文章,会从零基础建立数据结构和算法知识体系和算法思维。包括复杂度计算,常见的数据结构及操作,排序、递归、字符串匹配、搜索、贪心算法、分治算法、动态规划、回溯算法等。并且还会结合大厂的数据结构和算法面试题,讲解思路和解决方法。以及剖析数据结构和算法在互联网领域的常见应用,并且会不断持续更新分享给大家。

这套系列文章内容适用于初级程序员、高级程序员、架构师和一切喜欢研究算法追求细节的开发人员。如果感觉有所收获,可以动动小手指给点个赞,感谢阅读!

这篇关于算法5分钟|如何实现整数的数字反转【逆序输出法】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!