给定前半部分,有没有一种简单的方法可以在C ++中创建回文?例如给定“ abcdef”,我想返回“ abcdeffedcba”,同时保持输入的前半部分不变?

我知道您可以做到,但是有没有一种更好的方法可以做到这一点呢?在Java中,reverse()返回一个值,因此您可以一行完成它。

string createPalindrome(string & half)
{
    string temp = half;
    reverse(temp.begin(), temp.end());
    return half + temp;
}

最佳答案

如果您想一行执行此操作,请执行以下操作:

#include <string>
#include <iostream>

std::string createPalindrome(const std::string & half)
{
    return half + std::string(half.rbegin(), half.rend());
}

int main()
{
    std::cout << createPalindrome("abcdef");
}


Live Example

请注意,这基本上采用了字符串,并将其与本身的逆序连接起来。

half.rbegin()half.rend()是反向迭代器,因此使用这些迭代器构造临时反向字符串。

关于c++ - 给定前半部分的一种在C++中创建回文集的好方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54016345/

10-11 15:30