回文测试功能
Palindrome testing function
这个函数似乎适用于奇数位数的数字,但不适用于每个偶数的数字(例如,它为 2662 返回 true,但对 906609 不返回)。 在过去的 20-30 分钟内,我一直在试图弄清楚,但我还没有找到原因。
#include <math.h>
int digits(int n)
{
return log10(n)+1;
}
bool ispalindrome(int n)
{
int c=digits(n);
for(int i=0; i<c/2; i++){
int a=pow(10,i),b=pow(10,c-i-1);
if( int(n/a) %10 != int(n/b) %10 ) return false;
}
return true;
}
#include <iostream>
#include <cstdlib>
int main(int, char**argv)
{
while (*++argv)
std::cout << *argv
<< (ispalindrome(std::atoi(*argv)) ? " is a palindrome." : " is not a palindrome.")
<< std::endl;
}
我无法重现,但我认为将 int 作为字符串进行比较会更容易 == 反向字符串:
bool isPalindrome(const int& n)
{
std::stringstream ssN;
ssN << n;
auto numberAsString = ssN.str();
auto reversed = numberAsString;
std::reverse(numberAsString.begin(), numberAsString.end());
return numberAsString == reversed;
}
请检查代码:main.cpp
我无法重现您的结果 - 我得到了您的两个测试用例的预期答案。
顺便说一句,您可以通过简单地反转数字然后与原始数字进行比较来避免<math.h>
bool ispalindrome(int n)
{
int a = 0;
for (int r = n; r; r /= 10)
a = a*10 + r%10;
return a == n;
}
相关文章:
- G++10 的功能测试在 __cpp_lib_span 上失败
- 单位测试私人方法通过使其自由功能
- 单位测试QT中的非返回功能
- 功能测试宏在 Visual C++ 中无法正常工作
- 在Google测试框架中,如何期望函数调用或其他功能调用
- 谷歌测试的重载功能
- (指针)降低测试分数后计算平均功能的问题
- 测试模拟功能的最佳方法
- 支架检查功能仅测试输入的前 2 个
- 相等性测试功能
- 更改单元测试的类功能的正确方法
- 如何使用C++测试功能支持
- 在Linux Mint上编译Qt-OpenGL功能测试失败
- 回文测试功能
- 测试C 轮询插座功能
- CPPUNIT:我们真的每个测试需要一个功能吗?
- Mac的McCabe式功能复杂度测试
- 如何在编译过程中实现功能单元测试
- 如何使用Google测试在Main()函数中的特定位置调用特定的测试功能
- 人们为什么使用#IFDEF进行功能标志测试