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;
    }
    

      

  • 相关阅读:
    关闭requests请求的长连接
    Python连接数据库
    429状态码
    scrapy框架查看请求状态码
    requests请求发送的次数太多的情况下会报错(max ......)
    将中文乱码(ÎÖ¶ûÂ꾩¶«×ÔÓª¹Ù·½Æì½¢µê)转换成正确的格式(沃尔玛京东自营官方旗舰店)
    inout用法浅析
    Thread系列——Thread.Sleep(0)
    构造函数
    [DllImport("kernel32.dll")]是什么意思??
  • 原文地址:https://www.cnblogs.com/JesseyWang/p/12938693.html
Copyright © 2011-2022 走看看