和左神一起练算法

判断一个字符串是不是回文的字符串
这个问题的话,对于C++来说就是直接使用两个指针前后同时遍历,向中间缩进就可以了,这个是针对字符串而言的,假如是针对一个数字来说呢?让你判断这个数字是不是回文的数字
第一个会想到的就是先把数字转换成字符串,但是要是遇到卡时间复杂度的系数的,这个就有点不行了

考虑下里面一种写法
不得不说这段代码考虑的很全面,每一个细节扣的都很严格,也就是基础很扎实

bool func(int num)
{
	if (num < 0)
		return false;

	int help = 1;
	while (num / help > 10)
	{
		help *= 10;
	}
	/*
	while(help < num)
	{
		help *= 10;
	}
	help /= 10;
	不这样写的主要原因就是,这样写可能会存在溢出,因为毕竟while循环中最后多乘了一个10
	*/
	while (num != 0)
	{
		if (num / help != num % 10)   //第一位不等于最后一位的话那么就直接返回0
			return false;
		num = (num % help) / 10; //将第一位和最后一位去掉,拿到的是最中间的数字
		help /= 100;
	}
	return true;
}
发布了230 篇原创文章 · 获赞 28 · 访问量 9312

猜你喜欢

转载自blog.csdn.net/weixin_43767691/article/details/103555301
今日推荐