• 算法练习之整数反转,回文数


    最近在学习java,但是对于数据操作那部分还是不熟悉

    因此决定找几个简单的算法写,用php和java分别实现

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

    示例 1:

    输入: 123
    输出: 321
    

     示例 2:

    输入: -123
    输出: -321
    

    示例 3:

    输入: 120
    输出: 21
    

    注意:

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

    java

    class Solution {
       public int reverse(int x) {
            int ans = 0;
            int pop = 0;
            while(x != 0) {
                pop = x % 10;
                x /= 10;
                //是否溢出
                if(pop < 0 && ans < (Integer.MIN_VALUE - pop)/10) return 0;
                if(pop > 0 && ans > (Integer.MAX_VALUE - pop)/10) return 0;
    
                ans = ans * 10 + pop;
            }
            return ans;
        }
    }        

    php

    class Solution {
        function reverse($x) {
            $sign = 1;
            if($x<0){
                $sign =-1;
                $x= -$x;
            }
            $rs = 0;
            $mod = 0;
            while($x>9){
                $mod=$x%10;
                $rs = $rs*10+$mod;
                $x = ($x-$mod)/10;
            }
            $rs = $rs*10+$x;
            if($sign==-1){
                $rs = '-'.$rs;
            }
            $rs = (int)$rs;
            //是否溢出
            if(pow(-2,31)<$rs &&$rs <pow(2,31)-1){
                return $rs;
            }
            return 0;
        }
    }

    2.回文数

    判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

    示例 1:

    输入: 121
    输出: true
    

    示例 2:

    输入: -121
    输出: false
    解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
    

    示例 3:

    输入: 10
    输出: false
    解释: 从右向左读, 为 01 。因此它不是一个回文数。

    java

    class Solution {
        public boolean isPalindrome(int x) {
            if(x<0) return false;
            int ans = 0;
            int pop = 0;
            int tmp = x;
            while(tmp != 0) {
                pop = tmp % 10;
                tmp /= 10;
                ans = ans * 10 + pop;
            }
            if(x==ans) return true;
            return false;
        }
    }

    php

    class Solution {
    
        function isPalindrome($x) {
            
            if($x<0) return false;
            $rs = 0;
            $mod = 0;
            $tmp = $x;
            while($tmp!=0){
                $mod=$tmp%10;
                $rs = $rs*10+$mod;
                $tmp = ($tmp-$mod)/10;
            }
            if($rs==$x)return true;
            return false;
        }
    }
  • 相关阅读:
    Cookie和Session的区别
    get和post的区别
    TCP和UDP的区别
    TCP三次握手过程
    docker 安装prometheus
    大数据集群环境搭建之一 hadoop-ha高可用安装
    大数据集群环境 zookeeper集群环境安装
    Centos 脚本中几个特殊符号的作用笔记
    VMware 设置虚拟机Centos 上网的两种方式
    大数据集群环境搭建之一 Centos基本环境准备
  • 原文地址:https://www.cnblogs.com/baby123/p/10856186.html
Copyright © 2020-2023  润新知