使用两个不同的队列比较字符串

时间:2015-05-08 20:47:46

标签: c++ string queue deque

刚开始使用队列,需要朝着正确的方向努力。

"编写一个读取两个句子并将其读入两个独立队列的程序。然后,程序应通过比较两者之间的字符来确定句子是否相同。当遇到两个不相同的字符时,程序应显示一条消息,指示句子不相同。如果两个队列包含相同的字符集,则应说明它们是相同的消息。"

我尝试了一些事无济于事。我无法理解我应该做的事情,以便从字符串中访问字符,以便我可以比较两者。

#include <iostream>
#include <string>
#include <deque>
using namespace std;

int main()
{
    deque<string> str1, str2;

    string s;

    cout << "Enter string #1: ";
    cin >> s;

    str1.push_back(s);

    cout << "Enter string #2: ";
    cin >> s;

    str2.push_back(s);

    // both queues have their respective strings. what now?
}

1 个答案:

答案 0 :(得分:0)

我认为您必须使用std::queue而不是std::deque

程序看起来像

#include <iostream>
#include <queue>
#include <string>

int main()
{
    std::string s1;

    std::cout << "Enter sentence #1: ";
    std::getline( std::cin, s1 );

    std::string s2;

    std::cout << "Enter sentence #2: ";
    std::getline( std::cin, s2 );

    std::queue<char> q1;
    for ( char c : s1 ) q1.push( c );

    std::queue<char> q2;
    for ( char c : s2 ) q2.push( c );

    while ( !q1.empty() && !q2.empty() && q1.front() == q2.front() )
    {
        q1.pop();
        q2.pop();
    }

    if ( q1.empty() && q2.empty() )
    {
        std::cout << "\nThe two sentences are identical" << std::endl;
    }
    else
    {
        std::cout << "\nThe two sentences differ" << std::endl;
    }

    return 0;
}