lintcode_学习笔记_回文数

本文介绍了在LintCode上实现回文数判断的过程,通过两种方法实现:一种是非bool型函数,采用指针比较;另一种为bool型函数,通过翻转数字进行比较。详细解析了代码实现细节。

第一次用lintcode才知道不用写主函数,并且右侧有代码要求

开始没有细看右侧东西,写了一个非bool函数的程序,

#include<iostream>
#include<string.h>
using namespace std;

char a[100000];
int flag = 1;

void huiwenshu()
{
	
	int b, c;
	for(b = 0; b < strlen(a)/2; b++)
		{	
			if(a[b] != a[strlen(a)-b-1])
				flag = 0;
				break;
		}
}

int main()
{	
	cin>>a;
	huiwenshu();
	if(flag == 0)
		cout<<"这个数不是回文数"<<endl;
	else 
		cout<<"这个数是回文数"; 
	return 0;
}

然而回网站看了半天,发现要用bool类型的函数提交,那么最简单的方法就是将这个数的顺序进行颠倒,那么我们首先想到用%10、/10、*10等手段分别去除各位、十位、百位……,将此数倒置过来

 bool isPalindrome(int num) {
        // write your code here
        long int temp = num;
        long int a = 0;

        while(temp != 0) {
            a = a * 10 + temp % 10;
            temp = temp / 10;
        }

        if (a == num) {
            return true;
        }

        return false;
    
    }

### Python 编程实现判断数字是否为回文数 为了判断一个数字是否为回文数,可以通过将其转换成字符串并比较该字符串与其反转版本是否相同来完成。这种方法简单直观。 ```python def is_palindrome(num): """ 判断给定的数字是否为回文数。 参数: num (int): 需要检测的数字 返回: bool: 如果num是回文则返回True;否则返回False """ # 将数字转为字符串形式以便操作 num_str = str(num) # 检查原字符串与翻转后的字符串是否相等 return num_str == num_str[::-1] ``` 此段代码定义了一个名为 `is_palindrome` 的函数用于接收一个整型参数 `num` 并执行上述逻辑[^3]。当输入数值被转化为字符串之后,通过切片语法 `[::-1]` 来获取其逆序表示,最后两者对比得出结论。 对于更高效的解决方案,在不将整个数字串完全逆转的情况下也可以验证它是不是回文: ```python def isPalindrome(x: int) -> bool: """负数不是回文数""" if x < 0: return False original, reversed_half = x, 0 while x != 0: reversed_half = reversed_half * 10 + x % 10 x //= 10 return original == reversed_half or original == reversed_half // 10 ``` 这段优化过的算法只构建了原始数字的一半反向副本,并且处理了一些特殊情况比如尾随零的情况[^4]。 #### 示例测试用法 下面是一些简单的例子展示如何调用这些函数以及预期的结果是什么样的: ```python print(is_palindrome(121)) # 输出 True print(is_palindrome(-121)) # 输出 False print(is_palindrome(10)) # 输出 False print(isPalindrome(121)) # 输出 True print(isPalindrome(-121)) # 输出 False print(isPalindrome(10)) # 输出 False ``` 以上就是关于Python编程中几种不同的方式去检验某个特定的数字是否构成所谓的“回文”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值