给定上半部分在 C++ 中创建回文的好方法
A good way to create a palindrome in C++ given first half
给定上半部分,是否有一种简单的方法可以在 C++ 中创建回文?例如给定 "abcdef",我想 return "abcdeffedcba",同时保持输入的前半部分不变?
我知道你可以做到,但是有没有更好的方法可以在一行中完成?在 Java 中,reverse() return 是一个值,因此您可以在一行中完成。
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");
}
请注意,这基本上是获取字符串并将其与自身的反向连接起来。
half.rbegin()
和half.rend()
是反向迭代器,所以临时反向字符串就是用这些迭代器构造的。
给定上半部分,是否有一种简单的方法可以在 C++ 中创建回文?例如给定 "abcdef",我想 return "abcdeffedcba",同时保持输入的前半部分不变?
我知道你可以做到,但是有没有更好的方法可以在一行中完成?在 Java 中,reverse() return 是一个值,因此您可以在一行中完成。
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");
}
请注意,这基本上是获取字符串并将其与自身的反向连接起来。
half.rbegin()
和half.rend()
是反向迭代器,所以临时反向字符串就是用这些迭代器构造的。