如何使Palindrome功能反转多个单词

时间:2018-03-29 21:10:26

标签: c++ palindrome

我的回文函数应该在字符串中找到一个单词(或多个单词),将它与容器中的一堆其他字符串进行比较,如果找到一个相同的字符串,扭转它,把它们粘在一起。例如。 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;
}

0 个答案:

没有答案