LEETCODE - [7. 整数反转]
时间:2019-11-18
本文章向大家介绍LEETCODE - [7. 整数反转],主要包括LEETCODE - [7. 整数反转]使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
【题目】
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
【我的解法】
class Solution { public: int maxNum = pow(2,31) - 1; int minNum = pow(-2,31); int reverse(int x) { //cout << maxNum <<"+" << minNum <<endl; string a = to_string(x); //cout << "source=" << a <<endl; int reversetemp; int index; int alen = a.length(); for(index = 0; index < alen/2; ++index){ reversetemp = a[index]; a[index] = a[alen - index -1]; a[alen - index -1] = reversetemp; } //cout << "reverse=" << a << endl; //去零 index = 0; while(a[index] == '0'){ index++; } if(index >= alen){ return 0; } if(a[alen - 1] == '-'){ return reverseNeg(&a[index]); } return reversePos(&a[index]); } int reverseNeg(string a) { int index; int alen = a.length(); a[alen - 1] = '\0'; //cout << "a=" << a << endl; long long retlong = 0; long long netRetLong = 0; int retint = 0; for(index = 0; index < a.length() - 1; ++index){ int temp = (int)(a[index]) - '0'; retlong = temp + retlong*10; netRetLong = -retlong; if(netRetLong < minNum){ return 0; } } return (int)netRetLong; } int reversePos(string a) { int index; //cout << "a=" << a << endl; long long retlong = 0; int retint = 0; for(index = 0; index < a.length(); ++index){ int temp = (int)(a[index]) - '0'; retlong = temp + retlong*10; if(retlong > maxNum){ return 0; } } return (int)retlong; } };
【别人的解法】
int reverse(int x) { int max = 0x7fffffff, min = 0x80000000;//int的最大值最小值 long rs = 0;//用long类型判断溢出 for(;x;rs = rs*10+x%10,x/=10);//逆序,正负通吃,不用单独考虑负值 return rs>max||rs<min?0:rs;//超了最大值低于最小值就返回0 }
原文地址:https://www.cnblogs.com/wangqiwen-jer/p/11882425.html
- 使用auth_request模块实现nginx端鉴权控制
- Docker学习之Docker镜像基本使用
- Docker学习之Centos7下安装
- Impala的Short-Circuit Reads
- js各种继承方式汇总
- Cloudera Navigator异常分析
- lodash源码分析之数组的差集
- lodash源码分析之baseFindIndex中的运算符优先级
- 在Ubuntu中安装Hadoop
- 如何编译及使用hive-testbench生成Hive基准测试数据
- lodash源码分析之缓存使用方式的进一步封装
- 文件包含与注入利用总结
- lodash源码分析之缓存方式的选择
- Navigator的使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python-leetcode442-循环排序】数组中重复的数据
- 【原创】Spring Boot集成Mybatis的玩法
- cloneRegExp
- 【python设计模式-创建型】工厂方法模式
- 【python设计模式-创建型】抽象工厂模式
- 【原创】MySQL数据库开发中的6个“避免”
- mysql 中的innoDB 引擎的B+树索引
- TypeScript手记(二)
- c语言之指针运算
- MySQL online DDL 更改Varchar的字段长度
- 【python-leetcode206-翻转链表】反转链表
- 程序員必須知道的面向对象设计六大原则
- python之面向对象中的多态
- TypeScript手记(三)
- python之单例设计模式