zoukankan      html  css  js  c++  java
  • 9.回文数

    题目描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
    示例 1: 输入: 121 输出: true
    示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

    • 常规解法:先反转再和原数做比较
    bool isPalindrome(int x){
        int num = x;
        long res = 0;  //注意这里要用long类型的数,有些不是回文数最后的数字可能很大
     
        if(x == 0) return true;
        else if(x < 0) return false;
        else{
            while(num > 0){
                res = res * 10 + num % 10;
                num = num / 10;
            }
            if(res == x) return true;
            else return false;
        }
    }
    //JS
    
    /**
     * @param {number} x
     * @return {boolean}
     */
    var isPalindrome = function(x) {
        if(x < 0) return false;
       
        let num = x, res = 0;
        while(num != 0){
            res = res * 10 + num % 10;
            num = Math.floor(num / 10);
        }
        if(res != x) return false;
        return true;
    };
    //数字转换成字符串后再双指针遍历
    
    var isPalindrome = function(x) {
        if(x < 0) return false;
        let str = "";
        str += x;
        for(let i = 0, j = str.length - 1; i < j; i++, j--)
            if(str[i] != str[j]) return false;
        
        return true;
    };

     

    补充:判断字符串是否是回文串

    • 空间换时间:从尾到头将字符串a赋值给字符串b,再从头开始比较a和b,全部相同则是回文
    int isPalindrome1() 
    { 
        int j,i,n; 
        char a[999],b[999]; 
    	printf("Please input string: ");
        scanf("%s",a);              //输入字符串 
        n=strlen(a);                //用strlen函数读取字符串长度(长度到停止) 
        for(i=0,j=n-1;i<n;i++,j--)  //循环将字符串a逆序赋值给b 
            b[j]=a[i];
        for(i=0;i<n;i++) 
        { 
            if(b[i]!=a[i]) 
    		 break;                 //判断是否回文 
        } 
        if(i==n) printf("是一个回文数!
    ");     //如果从第1位到n都相同 则输出回文数 
        else printf("不是一个回文数!
    "); 
        return 0; 
    }
    • 第i个位置上的字符和第n-1-i位置上的字符做比较
    int isPalindrome2(char *str)
    {
        int i,n=0,fg=1;                 //设置标志位
        char *p=str;
        while(*p){                      //将指针p置位到字符串末尾,并统计字符数
            n++;
            p++;
        }
        for(i=0;i<n/2;i++){             //循环比较字符
        if(str[i]!=str[n-1-i]){
            fg=0;
            break;
            }
        }
        return fg;
    }
    

      

  • 相关阅读:
    Springboot websocket学习Demo
    webpack与vue使用
    图片服务器图片剪切处理
    时间字段设置默认值
    函数的递归
    数据类型检测及封装
    隔行变色
    if-else案例–开关灯
    作用域
    数据类型核心操作步骤和原理
  • 原文地址:https://www.cnblogs.com/JesseyWang/p/12938693.html
Copyright © 2011-2022 走看看