题目描述:
给出一个 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. codeforce-1201-C题解

    题目:给你一个包含n个整数的数组A(n为奇数),对A做k次以下操作: 对数组排序使数组以非递减顺序排列. 选取数组的中位数,然后加一 最终使得数组的中位数最大. 输入:第一行输入两个数字 n 和 k ...

  2. 引用极光jar包之后出现控制台日志打印不出来的问题。解决!

    由于极光的jar包中引用的有log4j,项目本身也引用有log4j,如果版本有冲突,则会出现控制台日志记录打印不出来的现象.解决:引用极光jar包的时候,排除log4j. <dependency ...

  3. java基础之和String相关的一些转换

      String虽然不是java的基本数据类型,但使用的频率却非常之高,可以说是很常见了. 列举几个常见的关于String的转换,写的有点过于简洁,欢迎纠错和补充   1.Object和String的 ...

  4. 使用.Htaccess文件实现301重定向常用的七种方法

    使用.Htaccess文件实现301重定向常用的七种方法   301重定向对广大站长来说并不陌生,从网站建设到目录优化,避免不了对网站目录进行更改,在这种情况下用户的收藏夹里面和搜索引擎里面可能保存的 ...

  5. css3:bacground-size

    个人博客: https://chenjiahao.xyz CSS3之背景尺寸Background-size是CSS3中新加的一个有关背景的属性,这个属性是改变背景尺寸的通过各种不同是属性值改变背景尺寸 ...

  6. 星之小说下载器Android版

    原本是想在酷安上架的,然而审核不通过..只能通过网页方式宣传了 一款使用Jsoup开源库网络爬虫的APP,将在线阅读的小说解析,把小说全本下载为txt文件 由于使用爬虫技术,所以下载的速度不是很理想, ...

  7. cocos2d-x C++ 工程初探

    经过较为繁琐的环境搭建后,我们终于运行出了一个helloworld窗口,可以正式上手cocos了 现在我们就从改代码开始玩起 窗口 我们之前讲到AppDelegate类是程序的入口,所以和窗口有关的设 ...

  8. hihoCode 1075 : 开锁魔法III

    时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 一日,崔克茜来到小马镇表演魔法. 其中有一个节目是开锁咒:舞台上有 n 个盒子,每个盒子中有一把钥匙,对于每个盒子而言有且仅 ...

  9. strcpy()、strncpy()和memcpy()对比

    strcpy()函数声明:char *strcpy(char *dest, const char *src)返回参数:指向最终的目标字符串 dest 的指针.注意事项:只能复制char类型的字符数组, ...

  10. mvc请求管道(一)

    一.前言 在平常做后台开发的时候,经常会说到请求管道,很多开发者都知道这个,也能说几句,可能没法详细的去介绍,今天就来详细的说一下这个. 二.到达IIS之前 请看下面这个流程图.从用户打开浏览器到请求 ...