题目描述:
给出一个 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. RocketMQ学习 -> NameServer路由中心

    RocketMQ项目代码核心目录说明 broker:broker启动进程 client:消息客户端,包含消息生产者,消息消费者相关类 common:公共包 dev:开发者信息(非源代码) distri ...

  2. SpringBoot 定时任务实现方式

    定时任务实现的几种方式: Timer:是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行,但 ...

  3. 深入了解String,StringBuffer和StringBuilder三个类的异同

    Java提供了三个类,用于处理字符串,分别是String.StringBuffer和StringBuilder.其中StringBuilder是jdk1.5才引入的. 这三个类有什么区别呢?他们的使用 ...

  4. HttpWebRequest上传多文件和多参数——整理

    1.整理HttpWebRequest上传多文件和多参数.较上一个版本,更具普适性和简易型.注意(服务方web.config中要配置)这样就可以上传大文件了 <system.webServer&g ...

  5. ArcGIS Server10.1 动态图层服务

    动态图层的应用场景: 1 改变现有图层:符号,渲染方式和版本,这些都可以通过客户端请求的时候给定相应的参数来进行设置,从而来达到轻易改变地图的效果. 2 添加地图服务中没有的图层 添加的数据可以是矢量 ...

  6. Django2.0入门:第一章、Django是啥

    Django介绍 缘起 随着Python语言的兴起,越来越多的程序员开始转向这门语言的学习.在我们学习完Python基础之后,就可以选择利用Python这门语言进行Web应用开发.而众多Python ...

  7. Python入门系列【附】进阶教程

    如题,本篇将讲解Python提升之路:Python作为语法简单易学的语言,入门容易精通却很难,这是共识,那么为什么会有这样的共识?精通Python的难度在哪里? Python拥有简单.形象.直观的语法 ...

  8. 【SQL】sql统计不同类别的不同状态的数目

    例子:某主机下有5149个设备,设备分不同类别,设备运行会有不同状态(1-正常.2-告警.3-故障.0-离线) sql: SELECT t.DEVICE_TYPE_NAME,SUM(CASE t.DE ...

  9. Spring Boot (十五): 优雅的使用 API 文档工具 Swagger2

    1. 引言 各位在开发的过程中肯定遇到过被接口文档折磨的经历,由于 RESTful 接口的轻量化以及低耦合性,我们在修改接口后文档更新不及时,导致接口的调用方(无论是前端还是后端)经常抱怨接口与文档不 ...

  10. The Troublesome Frog

    In Korea, the naughtiness of the cheonggaeguri, a small frog, is legendary. This is a well-deserved ...