C++ C++;编码逻辑-各种想法
我想写一个方法来确定给定的字符串是否是回文。例如,“夫人,我是亚当”,或“一个男人,一个计划,一条运河,巴拿马” 该功能的原型是:C++ C++;编码逻辑-各种想法,c++,stl,C++,Stl,我想写一个方法来确定给定的字符串是否是回文。例如,“夫人,我是亚当”,或“一个男人,一个计划,一条运河,巴拿马” 该功能的原型是: bool is_palindrome(char const * str) 我有一个简单的逻辑,通过从字符串的最末端向前和向后移动来检查相等性。但是,我想知道有多少有效的方法可以做到这一点?所有的想法欢迎C++大师。 < p>我认为没有更有效的方法,你必须比较字符串中的每个字符。< /P> 可能的优化:您只需检查字符串的前半部分,一旦发现不匹配,您就可以提前退出 b
bool is_palindrome(char const * str)
我有一个简单的逻辑,通过从字符串的最末端向前和向后移动来检查相等性。但是,我想知道有多少有效的方法可以做到这一点?所有的想法欢迎C++大师。 < p>我认为没有更有效的方法,你必须比较字符串中的每个字符。< /P> 可能的优化:您只需检查字符串的前半部分,一旦发现不匹配,您就可以提前退出
bool is_palindrome(char const * str)
{
size_t len = strlen(str);
bool isPalindrome = false; // It's debatable if a blank string is a palindrome or not
for(int i = 0; i < len / 2; i++)
{
if(str[i] != str[len - i - 1])
{
isPalindrome = false;
break;
}
isPalindrome = true;
}
return isPalindrome;
}
bool是回文(char const*str)
{
尺寸长度=strlen(str);
bool isPalindrome=false;//空白字符串是否为回文是有争议的
对于(int i=0;i
有和。可能的重复?请注意,如果您严格忽略空格、标点符号和大写字母(顺便说一句,这是一种几乎普遍的情况),那么您的两个示例都只是回文。这将如何影响您的方法?对于强制执行其中一个或多个变量的变体,是否值得编写代码?你会怎么做?你能为所有可能的组合提供一个干净的界面吗?一旦你做到了,你就会明白你的问题。如果源代码使用两个指针而不是数组索引器,那么编译后的代码可能会更紧凑;e、 g.if(*startPtr++!=*endPtr--){…}