【学习笔记】把一个数字看成字符串,问它是不是一个回文数?

本文介绍了一个简单的方法来判断一个数字是否为回文数。通过将数字转换为字符串并反转比较,可以有效地解决这一问题。文章提供了C++和Java示例代码,并强调了优化时间和空间复杂度的重要性。
大家对回文串不陌生吧?一个字符串从前看和从后看如果一样的话,就是回文串。比如“上海自来水来自海上”就是一个回文串。现在我们的问题来了,把一个数字看成字符串,问它是不是一个回文数?这么简单的题目对想要成为小米工程师的你来说肯定不是问题。不过提醒一下哦:时间复杂度和空间复杂度越低的算法,得分越高。
C++:
  bool isPalindromeNumber(long num)
Java:
  boolean isPalindromeNumber(long num)
示例:12321 ->  true
      3     ->  true 

      133434->  false

解答:

bool isPalindromeNumber(long num)

{ 

      long temp = 0 ,x = 0; 

      temp = num ;

      while( temp > 0 )
     {
         x = x * 10 + temp % 10 ;
         temp /= 10 ; 
     }   
     return (num == x) ;

}

在C语言中,回文检测主要是检查一个序列(如字符串数字)从前往后读和从后往前读是否相同。这里我们先来看如何用C语言判断一个字符串是否是回文: 1. **函数声明**: ```c #include <stdbool.h> #include <string.h> bool isPalindrome(char str[], int len); ``` 2. **函数实现**: ```c bool isPalindrome(char str[], int len) { int start = 0; int end = len - 1; while (start < end) { if (str[start] != str[end]) { return false; // 如果字符不相等,则不是回文 } start++; end--; } return true; // 遍历结束后,如果都相等则是回文 } ``` 如果你想检测一个数字是否是回文,可以将其转换成字符串形式,然后利用上述函数。 对于数字,你可以将整数转换成字符串,例如: ```c #include <stdio.h> #include <ctype.h> // 包含处理字符类型的库 // 数字字符串 char* numToString(int n) { char result[100]; int i = 0; while (n > 0) { result[i++] = n % 10 + '0'; n /= 10; } result[i] = '\0'; // 添加结束符 reverse(result); // 另外定义一个反转字符串的函数 return result; } // 反转字符串 void reverse(char* str) { int start = 0; int end = strlen(str) - 1; while (start < end) { char temp = str[start]; str[start] = str[end]; str[end] = temp; start++; end--; } } int main() { int number = 12321; char* str = numToString(number); // 检查字符串是否是回文 if (isPalindrome(str, strlen(str))) { printf("%d 是回文\n", number); } else { printf("%d 不是回文\n", number); } free(str); // 注意释放字符串内存 return 0; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值