题目描述:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

我的解答:
package Simple;
import java.util.Scanner;
public class Practice2 {
private int i = 1;
// 默认为整数,即无符号
private String sign = ""; public static void main(String[] args) {
Practice2 sol = new Practice2();
sol.getNum();
} private void getNum() {
System.out.println("请输入要反转的整数:");
//判断输入的整数是几位数
Scanner input = new Scanner(System.in);
//n为输入的整数
int n = input.nextInt();
// System.out.println(n);
input.close();
//首先判断是否越界
// if (n < Integer.MIN_VALUE || n > Integer.MAX_VALUE)
// System.out.println("输入的整数越界!");
// 接着判断符号
// 如果是负数,则先把符号去掉,把绝对值反转之后再加上负号
if (n < 0)
this.sign = "-";
n = Math.abs(n);
//求整数为几位数
int m = n;
while (m > 9) {
// // m除以10表示位数多了一位
m = m / 10;
this.i++;
// //如果m/10仍然>9,则继续进入while循环
}
if (n < 10)
System.out.println("输入的整数为一位数,反转后的数为:" + this.sign + n);
else {
System.out.println("输入的整数为" + i + "位数");
//首先要注意是有符号整数,负数反转之后仍然为负数
//其次要注意范围是32位,如果溢出就返回0
//反转后的整数
int res = this.reverse(n);
System.out.println("反转后的整数为:" + this.sign + res);
} } private int reverse(int x) {
int p, w, t, s, m = x, sum = 0;
//这里我们对反转方法只考虑正整数,且n>10
//有几位数就输出几次
for (int k = this.i; k >= 1; k--) {
t = 1;
s = 1;
//第k位数就除以10的k-1次方
for (int j = 1; j <= k - 1; j++) {
t *= 10;
}
//得到第k位数的值
m = m / t;
w = this.i - k;
// l=Math.pow(10,w);
for (int f = 1; f <= w; f++) {
s *= 10;
}
p = m * s;
sum += p;
//将首位去掉,对剩下的数重复输出
m = x % t;
}
return sum;
}
}
自我分析:

自己写得很复杂,过程比较麻烦,在别人的评论中看到一个不错的回答,学习经验:
更优解答:
package Simple;

import java.util.Scanner;

public class Test {
public static void main(String[] args) {
Test t=new Test();
Scanner input = new Scanner(System.in);
System.out.println("请输入要反转的整数:");
//n为输入的整数
int n = input.nextInt();
input.close();
int res=t.reverse(n);
System.out.println(res);
}
public int reverse(int x) {
long rs = 0;
while(x != 0){
rs = rs*10+x%10;
x /= 10;
}
return (rs<Integer.MIN_VALUE || rs>Integer.MAX_VALUE) ? 0:(int)rs;
}
}
												

leetcode算法小题(2)的更多相关文章

  1. leetcode算法小题(3)

    问题描述: 判断一个数是否为回文数 class Solution {      public boolean isPalindrome(int x) {           if(x<0)    ...

  2. leetcode算法小题(1)

    题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数 ...

  3. LeetCode算法扫题系列19

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9104677.html LeetCode算法第19题(难度:中等) 题目:给定一个链表,删 ...

  4. LeetCode算法扫题系列83

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9104582.html LeetCode算法第83题(难度:简单) 题目:给定一个排序链表 ...

  5. leetcode算法刷题(五)——动态规划(三)

    今天的题目不是leetcode上面的.只是觉得动态规划还是不算很熟练,就接着找了点DP的题练练 最长递增子序列的长度 题目的意思:传入一个数组,要求出它的最长递增子序列的长度.例如:如在序列1,-1, ...

  6. leetcode 算法刷题(一)

    今天开始刷Leetcode上面的算法题.我会更新我刷题过程中提交的代码(成功和不成功的都有)和比较好的解法 第二题 Add Two Numbers 题目的意思:输入两个链表,这两个链表都是倒序的数字, ...

  7. leetcode算法刷题(四)——动态规划(二)

    又到了晚上,动态规划,开刷! 第121题 Best Time to Buy and Sell Stock 题目的意思:给予一个数组price,表示特定股票在某天的股价,里面第i个数表示第i天的价格.只 ...

  8. leetcode算法刷题(三)

    今天在刷了几道简单的动态规划后,又看了看string方面的题 第五题 Longest Palindromic Substring 题目的意思:求一个字符串的最长回文子串 分析:开始,我的想法是,现在字 ...

  9. leetcode算法刷题(二)——动态规划(一)

    上次刷了五六道题,都是关于string处理的,这次想换个知识点刷一下,然后再回头刷string的题,当做复习.. 这几天主要会选择动态规划的题目,因为以前从没刷过这方面的东西,很多东西都不是很懂..就 ...

随机推荐

  1. linux查看系统的一些版本号指令

    1.查看系统 [root@iZbp1eoiap1e1jb6pvo390Z ~]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch ...

  2. JQuery 数组按指定长度分组

    JQuery方法 // 将data每3个一组进行分组 var data = ['法国','澳大利亚','智利','新西兰','西班牙','加拿大','阿根廷','美国','0','国产','波多黎各' ...

  3. Tornado基础学习篇

    1.1 Tornado是什么? Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应 ...

  4. POJ 2431——Expedition(贪心,优先队列)

    链接:http://poj.org/problem?id=2431 题解 #include<iostream> #include<algorithm> #include< ...

  5. 从零开始入门 K8s | 应用存储和持久化数据卷:核心知识

    作者 | 至天 阿里巴巴高级研发工程师 一.Volumes 介绍 Pod Volumes 首先来看一下 Pod Volumes 的使用场景: 场景一:如果 pod 中的某一个容器在运行时异常退出,被 ...

  6. IDEA 学习笔记之 Python项目开发

    Python项目开发: 下载Python: https://www.python.org/downloads/release/python-363/ 安装Python: 配置环境变量(path): C ...

  7. .net mvc web api Autofac依赖注入框架-戈多编程

    今天自己搭了一套基于三层的依赖注入mvc web api 的依赖注入框架,在此总结下相关配置 1.设置应用程序的.net Framework版本为 4.5 2.通过Nuget 安装autofac包 I ...

  8. synchronized块中的wait()、nofity()、nofityAll()方法

    前言 在Java并发编程实战,会经常遇到多个线程访问同一个资源的情况,这个时候就需要维护数据的一致性,否则会出现各种数据错误,其中一种同步方式就是利用Synchronized关键字执行锁机制,锁机制是 ...

  9. 微信小程序与用户交互

    微信小程序与用户交互 一.显示消息提示框 wx.showToast({属性名:属性值}) 自定义一个提示框,时间到了会自动关闭 wx.showToast({ title:"成功", ...

  10. java架构之路-(Redis专题)Redis的主从、哨兵和集群

    我们使用的redis,单机的绝对做不到高可用的,万一单机的redis宕机了,就没有备用的了,我们可以采用集群的方式来保证我们的高可用操作. 主从架构 大致就是这样的,一个主节点,两个从节点(一般两个就 ...