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

     示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-integer

初步分析
  1. 可以暴力法,强行转化成字符串反转。
  2. 可以利用取余来每位反向添加入另一个整数中。O(log(x))

本章总结

【小总结】
1.【尽量不要用暴力法】
2.【利用数学运算eg:%,/】

【详细总结】

原x a 变化后x result
1234 4 123 4
123 3 12 43
12 2 1 432
1 1 1 4321

详细代码

public class Solution {public int Reverse(int x) {if(x==0)return 0;int tag = x>0?1:-1;x=x*tag;int result=0;while(x>0){int a = x%10;x=x/10;if(result>int.MaxValue/10||(result==int.MaxValue/10)&&a>7)return 0;result = result*10 + a;}return result * tag;}
}

另一个理解比较简单的版本

public class Solution {public int Reverse(int x) {long result = 0;while (x != 0){int temp = x % 10;x = x / 10;result = result * 10 + temp;}//判断是否存在溢出,极易忽略这点if (result > int.MaxValue || result < int.MinValue){result = 0;}return (int)result;}
}
 位运算符:(a & b)按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0输出结果 12 ,二进制解释: 0000 1100(a | b)按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。输出结果 61 ,二进制解释: 0011 1101(a ^ b)按位异或运算符:当两对应的二进位相异时,结果为1输出结果 49 ,二进制解释: 0011 0001(~a )按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。a << 2左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。输出结果 240 ,二进制解释: 1111 0000a >> 2右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数输出结果 15 ,二进制解释: 0000 1111赋值运算符:*= 乘法赋值运算符 c *= a 等效于 c = c * a/= 除法赋值运算符 c /= a 等效于 c = c / a%= 取模赋值运算符 c %= a 等效于 c = c % a**= 幂赋值运算符 c **= a 等效于 c = c ** a//= 取整除赋值运算符 c //= a 等效于 c = c // a

作者:boywithacoin_cn
链接:https://leetcode-cn.com/problems/reverse-integer/solution/pythondan-chu-he-tui-ru-shu-zi-yi-chu-qian-jin-xin/
来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

以下是个人的最初解题的垃圾代码,引以为戒。

public class Solution {private const long INT_MAX = 2147483647;private const long NINT_MAX = -2147483648;public int Reverse(int x) {string before = null;if (x < 0)before = x.ToString().Remove(0, 1);if (x >= 0)before = x.ToString();char[] after = new char[before.Length];for (int i = 0; i < before.Length; i++){after[i] = before[before.Length - i - 1];}before = new string(after);if (x < 0){if(long.Parse("-" +before)>NINT_MAX)return (int.Parse("-" +before));elsereturn 0;}else if (x > 0&&x<INT_MAX){if(long.Parse(before)<INT_MAX)return (int.Parse(before));elsereturn 0;}else{return (0);}}
}

【整数反转】算法优化笔记相关推荐

  1. 【罗马数字转整数】算法优化笔记

    给定一个罗马数字,将其转换成整数. 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗 ...

  2. 【回文数】算法优化笔记

    判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数(不将整数转为字符串来解决). 示例 1:输入: 121输出: true示例 2:输入: -121输出: fals ...

  3. 【两数之和】算法优化笔记

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

  4. 【斐波那契数列】算法优化笔记

    题目:斐波那契数列为:1,1,2,3,5,8-,求第n项? 初步分析 设an为斐波那契数列. a1=a2=1;(n<=2) an=a(n-1) + a(n-2);(n>=2) 本章总结 [ ...

  5. python反转一个整数、123变成321_python整数反转算法

    题目描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 1 ...

  6. 【最长公共前缀】算法优化笔记

    题目:编写一个函数来查找字符串数组中的最长公共前缀.如果不存在公共前缀,返回空字符串 "". 示例 1:输入: ["flower","flow&quo ...

  7. 【算法训练】DAY1:整数反转

    1 前言 题目来源于Leetcode. 重点:理清逻辑,忽略细节,模仿高手,五毒神掌 2 题目分析 题目很容易理解,先分成两个部分 正数 负数 先解决正数 最开始想到的是 int char数组 lon ...

  8. 【每日一算法】整数反转

    微信改版,加星标不迷路! 每日一算法 - 整数反转 12 月 14 日 周 四 难度:简单.由于读者水平不一,所以从简单的做起,逐渐加难度. 题目:给出一个 32 位的有符号整数,你需要将这个整数中每 ...

  9. 推荐算法炼丹笔记:科学调参在模型优化中的意义

    作者:九羽 ,公众号:炼丹笔记 基于Embedding的推荐算法模型一直是近几年研究的热门,在各大国际会议期刊都能看到来自工业界研究与实践的成果.MF(Matrix Factorization)作为传 ...

最新文章

  1. AJAX是一门艺术: XHR篇
  2. 软件体系结构的风格(转载)
  3. python中的逻辑关系
  4. 使用uploadify上传图片时返回“Cannot read property 'queueData' of undefined”
  5. 使用MATLAB和Vivado读取txt文件
  6. 微信模版消息 touser 能否多个 群发
  7. Vue 过渡效果的组件
  8. python计时器程序设计总框图_怎么用python编写计时器?这个编程的方法你一定不要错过...
  9. 伪随机数与采样(sampling)
  10. [leetcode]5178. 四因数
  11. mybatis if where标签怎么使用?
  12. Windows 7 64位下使用ADB驱动
  13. Leetcode. 14. Longest Common Prefix
  14. 十分钟教你学会vi编辑器使用方法(详细版)
  15. python打印万年历_你会用Python打印一个万年历吗?像月历一样好看!
  16. c语言实现校园疫情防控系统
  17. Android-黑客技术-实现类似电脑版软件破解版
  18. 今年的WWDC,真的很难说
  19. VAD、KWS、ASR
  20. Herb Sutter简介

热门文章

  1. ​Transformer升级之路:从Performer到线性Attention
  2. 岗位内推 | 微软亚洲互联网工程院自然语言处理组招聘
  3. 岗位推荐 | 蚂蚁金服招聘机器学习、自然语言处理算法工程师
  4. KDD 18论文解读 | 斯坦福大学提出全新网络嵌入方法 — GraphWave
  5. 丑憨批的爬虫笔记5信息标记与提取
  6. 西安电子科技大学第16届程序设计竞赛 E题
  7. php oo,OO思想之PHP之三大特性
  8. .net core发布 正在发现数据上下文_Tableau 2020.4 正式发布,即刻探索浏览器中的 Tableau Prep Builder、空间增强等新功能...
  9. Redis哨兵主备切换的数据丢失及Redis数据持久化
  10. Java queue总结