zoukankan      html  css  js  c++  java
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

    package com.gupao.jay.pattern.singleton;
    
    /**
     * @Author JAY
     * @Date 2019/6/2 9:50
     * @Description 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
     *
     * 示例 1:
     *
     * 输入: 123
     * 输出: 321
     *  示例 2:
     *
     * 输入: -123
     * 输出: -321
     * 示例 3:
     *
     * 输入: 120
     * 输出: 21
     * 注意:
     *
     * 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
     **/
    public class LuTest {
    
        public static void main(String[] args) {
            LuTest test = new LuTest();
            int x = -2147483412;
            System.out.println(test.reverse(x));
        }
    
        public int reverse(int x) {
            String str = String.valueOf(x);
            int pow = (int) Math.pow(2, 31);
            int leftLimit = pow * (-1);
            int rightLimit = pow - 1;
            System.out.println(leftLimit);
            System.out.println(rightLimit);
            char[] chars = str.toCharArray();
            int limit = 0;
            char[] newChars = null;
            if ('-' == chars[0]){
                newChars = new char[chars.length - 1];
                for (int i = 1; i < chars.length; i++){
                    newChars[chars.length - 1 - i] = chars[i];
                }
                limit = leftLimit * (-1);
                return validateTargetNumber(newChars,limit) * (-1);
            }else {
                newChars = new char[chars.length];
                for (int i = 0; i < chars.length; i++){
                    newChars[chars.length - 1 - i] = chars[i];
                }
                limit = rightLimit;
                return validateTargetNumber(newChars,limit);
            }
        }
    
        private int validateTargetNumber(char[] newChars, int limit) {
            String targetStr = String.valueOf(newChars);
            char[] rs = filterZero(targetStr);
            boolean isOut = checkOutInt(limit, rs);
            if (isOut){
                return 0;
            }
            String valueOf = String.valueOf(rs);
            return Integer.valueOf(valueOf);
        }
    
        private char[] filterZero(String targetStr) {
            if (targetStr.length() == 1 && "0".equals(targetStr)){
                char[] chars = new char[1];
                chars[0] = '0';
                return chars;
            }
            //过滤前面位置为0的数字
            char[] number = targetStr.toCharArray();
            //前面位置是0的长度
            int zeroLength = 0;
            for (int i = 0; i < number.length; i++){
                if ('0' != number[i]){
                    break;
                }
                zeroLength++;
            }
            char[] rs = new char[number.length - zeroLength];
            for (int i = zeroLength; i < number.length; i++){
                rs[i - zeroLength] = number[i];
            }
            return rs;
        }
    
        private boolean checkOutInt(int limit, char[] rs) {
    
            //将过滤掉0之后的数字进行越界判断
            String limitStr = String.valueOf(limit);
            if (rs.length > limitStr.length()){
                //越界
                return true;
            }
            if (rs.length < limitStr.length()){
                //未越界
                return false;
            }
            //如果数字长度相等,则判断是否越界
            char[] limitChars = limitStr.toCharArray();
            for (int j = 0; j < limitChars.length; j++){
                //结果数字每个位置上的数字必须小于等于limit的每个位置上的数字
                if(rs[j] > limitChars[j]){
                    //越界
                    return true;
                }else if(rs[j] < limitChars[j]){
                    //不越界
                    return false;
                }
            }
            return false;
        }
    
    }
    

      

  • 相关阅读:
    Mysql 5.6 源码编译安装
    Python中的数据类型之字符串
    Python中变量的命名与使用(个人总结)
    Windows环境下python3.7版本怎么安装pygame
    web应用无法访问的原因之一以及如何设置数据库编码
    项目代码设计规范总结之分页查询
    当java web项目部署到服务器上时,无法将图片等媒体文件保存到服务器的最终奥义
    如何查看服务器上打印的信息
    java代码实现JVM栈溢出,堆溢出
    springmvc源码分析(转)
  • 原文地址:https://www.cnblogs.com/ningJJ/p/10962281.html
Copyright © 2011-2022 走看看