导读概述
本章节分三篇
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/
• 后记 •
本系列算法文章,会从零基础建立数据结构和算法知识体系和算法思维。包括复杂度计算,常见的数据结构及操作,排序、递归、字符串匹配、搜索、贪心算法、分治算法、动态规划、回溯算法等。并且还会结合大厂的数据结构和算法面试题,讲解思路和解决方法。以及剖析数据结构和算法在互联网领域的常见应用,并且会不断持续更新分享给大家。
这套系列文章内容适用于初级程序员、高级程序员、架构师和一切喜欢研究算法追求细节的开发人员。如果感觉有所收获,可以动动小手指给点个赞,感谢阅读!
标签:输出,int,反转,整数,算法,数组,逆序 来源: https://blog.csdn.net/lihaoranhelloworld/article/details/121790262
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。