阅读 143

算法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:

leetcode-cn.com/problems/re…

                                    • 后记 • 复制代码

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

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



作者:架构师技术专栏
链接:https://juejin.cn/post/7039218933726969870


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐