zoukankan      html  css  js  c++  java
  • LeetCode第二题

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

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

    输入: 123
    输出: 321

    解答:

    class Solution {
        public int reverse(int x) {
            long s=0;
            while(x-x%10!=0)
            {
                s=s*10+x%10;
                x=(x-x%10)/10;
            }
             s=s*10+x;
            return s<-2147483648||s>2147483647?0:(int)s;
        }
    }
    有个很大的问题是题目中又“我们的环境只能存储得下 32 位的有符号整数”这一条件,而long型又违反题目的嫌疑。
    三目运算符,语法形式:布尔表达式 ? 表达式1 :表达式2。可以节约代码量。
     
    贴几个个人认为值得记录的答案:
    C语言,来源:评论区,止于至善
    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
    }
     
    Java       来源:评论区,笑容
     public int reverse(int x) {
            String xString = Integer.toString(x);
      //Interger.toString(1) 是把数字用字符串的形式表示出来
            String string = xString;
            int flag = 1;
            if (x < 0) {
                flag = -1;
                string = xString.substring(1);
            }
            try {
                return Integer.valueOf((new StringBuilder(string)).reverse().toString()) * flag;
            }catch (Exception e){
                return 0;
            }
        }
    这个是将数字转化为字符串处理,并用异常来判断溢出。
  • 相关阅读:
    Activator.CreateInstance 反射实例化对象
    MVC Form提交
    Redis 下载
    List<T> 序列化与反序列化
    快速反射DataTable
    数据库特性
    javascript判断文件大小
    MD5
    HttpHelper
    cacheHelper
  • 原文地址:https://www.cnblogs.com/gaolight/p/12932405.html
Copyright © 2011-2022 走看看