Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;编码逻辑-各种想法_C++_Stl - Fatal编程技术网

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--){…}