[小米]2015小米校招之回文数判断

【题目】

大家对回文串不陌生吧?一个字符串从前看和从后看如果一样的话,就是回文串,比如“上海自来水来自海上”就是一个回文串。现在我们的问题来了,把一个数字看成字符串,问它是不是一个回文数?时间复杂度和空间复杂度越低的算法,得分越高。

c++:

bool isPalindromeNumber(long num);

java:

boolean isPalindromeNumber(long num);

【代码】

#include <iostream>
using namespace std;

bool IsPalindromeNumber(long num){
    long reverseNum = 0;
    long temp = num;
    while(temp > 0){
        reverseNum = reverseNum * 10 + temp % 10;
        temp /= 10;
    }
    if(reverseNum == num){
        return true;
    }
    else{
        return false;
    }
}

int main(){
    long num;
    cin>>num;
    bool result = IsPalindromeNumber(num);
    if(result){
        cout<<num<<" is a palindrome number"<<endl;
    }
    else{
        cout<<num<<" is not a palindrome number"<<endl;
    }
    return 0;
}

【拓展1】字符串判断回文

bool IsPalindromeNumber(string num){
    int len = num.length();
    for(int i = 0;i < len/2;i++){
        if(num[i] != num[len-1-i]){
            return false;
        }
    }
    return true;
}
bool IsPalindromeNumber(string num){
    int len = num.length();
    for(int i = 0,j = len-1;i < j;i++,j--){
        if(num[i] != num[j]){
            return false;
        }
    }
    return true;
}

求有关回文的笔试题,可以给我发个链接,谢谢......

时间: 2024-08-08 03:07:12

[小米]2015小米校招之回文数判断的相关文章

回文数判断函数

#include <stdio.h>int f(int n)//判断是否是回文数,是返回1,否则返回0{ int t=0,m=n; while(m)//如果m不等于0,执行下面循环,否则跳出循环 (求这个数各位上数字反向排列的数 ) { t*=10; t+=m%10; m/=10; } return t==n;//如果这个数各位数字反向排列所得数依然等于该数,该数就是回文数 }

华为机试—回文数判断

判断一个整型数是否为"回文数",如1221,232,5. #include <iostream> using namespace std; void isHuiwen(int number) { int n = 0;//余数. int m = number; while(m != 0) { n = n*10 + m %10; //number的最低位变为n的最高位 m = m /10; } if(n==number) cout << "yes"

算法之回文数判断

所谓回文字符 串就是指正读反读均相同的字符序列,如“席主席”.“记书记”.“aha”和“ahaha”均是回 文,但“ahah”不是回文. 通过栈这个数据结构我们将很容易判断一个字符串是否为回文. 1 // 4. 判断回文字符串 2 char a[9], s[9]; 3 int i, len, mid, next, top; 4 5 gets(a); // 读入一行字符串 6 // a = "qwerewq"; 7 len = strlen(a); 8 mid = len / 2 - 1

回文数判断

#include<iostream> using namespace std; void is_HuiWenShu(int c) { int n = 0; int m = c; while (m != 0) { n = n * 10 + m%10; m = m / 10; } if (n == c) cout << "yes" << endl; else cout << "no" << endl; } in

回文数的实现代码

回文数,顾名思义,就是一种数,正序逆向读取完全一致.像12321,4567654就是回文数. 用C语言实现回文数的判断呢,很简单.在这呢,我做简单的介绍. 首先,用判断语句实现.判断语句呢,就是通过循环和简单的运算符,找出该数的逆向读取的数据,于本身进行比较便得到了. 代码如下: #include<stdio.h> void main() { int num; scanf("%d",&num); int min = 0, max = num; while (max

C判断一个正整数n的d进制数是否是回文数

所有的有关于回文数的定义和如何判断一个n的d进制数是否是回文数的方法都在我的代码注释当中,直接上代码: #include <stdio.h> int circle(int n,int d); /** * @brief main 判断正整数n的d进制表示是否是回文数 * @return */ int main(void) { /** * 回文数,就是顺着看和倒着看相同的书,例如n=232,十进制书表示为232, * 顺着看和倒着看都是232,则表示n是回文数 * 判断n的d进制表示是否是回文数有

javaScript实现回文数、水仙花数判断和输出斐波那契数列

    // 判断一个数是不是回文数                    // 方法一:先将数字转换成字符串,然后依次判断第一个和最后一个数字,第二个和倒数第二个数字...是否相等     function PalindromeNumber1(num){         var str = num.toString();         var flag = true;         var len = str.length;         for(var i = 0; i < (len 

C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数

各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由于 2 是一位数,所以返回 2. 进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗? 题目地址 https://leetcode-cn.com/problems/add-digits/ 代码模板 public class Solution { public int AddDigits

最长回文数

1:题目描述 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案.示例 2: 输入: "cbbd"输出: "bb" 来源:力扣(LeetCode) 2:题目分析 回文数是一种左右对称的字符串,如果从题目的背景一个大字符串出售,很容易使用暴力法,直接从1开始拓展成length-1长度