我的回文函数应该在字符串中找到一个单词(或多个单词),将它与容器中的一堆其他字符串进行比较,如果找到一个相同的字符串,扭转它,把它们粘在一起。例如。 palindrome -> palindromeemordnilap
,或者如果它不止一个字:two words > two wordssdrow owt
。
我的工作只用了一个单词,而且由于某种原因,也无法正确翻转句子中的最后一个单词。如果可能的话,我应该改变以完成上述任务?
#include <iostream>
#include <vector>
#include <string>
typedef std::vector<std::string> StringVektor;
std::string ReverseString(std::string s1)
{
std::string to_return(s1);
char temp(0);
for (int i(0); i < vrati.size() / 2; i++)
{
temp = to_return.at(i);
to_return.at(i) = to_return.at(to_return.length() - 1 - i);
to_return.at(to_return.length() - 1 - i) = temp;
}
return to_return;
}
std::string CreatePalindrome(String s, StringVektor v)
{
std::string compare;
for (int i(0); i < s.size(); i++)
{
if (s.at(i) != ' ')
compare += s.at(i);
if (s.at(i) == ' ' || i == s.length() - 1)
{
for (int j(0); j < v.size(); j++)
{
if (compare == v.at(j))
{
std::string put_in;
put_in = ReverseString(v.at(j));
s.insert(i, put_in);
}
}
compare.clear();
}
}
std::string to_return;
to_return = s;
return to_return;
}
int main ()
{
std::string sentence, phrase;
StringVektor v1;
std::cout << "Enter your sentence: ";
std::getline(std::cin, sentence);
std::cout << "Enter phrases: ";
for ( ;;)
{
std::getline(std::cin, phrase);
if(!fraza.empty())
v1.push_back(phrase);
if(std::cin.peek() == '\n')
break;
}
std::cout << "Your sentence after the transformation: " <<
CreatePalindrome(sentence, v1);
return 0;
}