C++ 用向量求解C++;

C++ 用向量求解C++;,c++,vector,C++,Vector,我有一个函数,它接受字符串的两个向量,并比较每个元素,看看它们是否是彼此的字谜 向量1:“bat”、“add”、“zyz”、“aaa” 向量2:选项卡、dad、xyx、bbb 限制和其他需要澄清的事项:函数应该循环两个向量并比较字符串。我只需要根据每个向量的索引进行比较;这意味着我只比较第一个索引中的字符串,然后比较第二个索引中的字符串,依此类推。可以安全地假设作为参数传入的向量总是相同的大小 如果比较的字符串是字谜,则屏幕上会打印“匹配”。如果不匹配,则打印“不匹配” 输出:匹配不匹配不匹配

我有一个函数,它接受字符串的两个向量,并比较每个元素,看看它们是否是彼此的字谜

向量1:“bat”、“add”、“zyz”、“aaa”

向量2:选项卡、dad、xyx、bbb

限制和其他需要澄清的事项:函数应该循环两个向量并比较字符串。我只需要根据每个向量的索引进行比较;这意味着我只比较第一个索引中的字符串,然后比较第二个索引中的字符串,依此类推。可以安全地假设作为参数传入的向量总是相同的大小

如果比较的字符串是字谜,则屏幕上会打印“匹配”。如果不匹配,则打印“不匹配”

输出:匹配不匹配不匹配

我在这个问题上陷入了荒谬的困境,我知道如何反转字符串,但当它变成这个问题时,我就有点不知所措了

我知道我需要遍历每个向量,然后进行比较。但是我怎样才能比较字符串中的每个字母呢?此外,我不允许包含任何其他内容,如算法、排序或集合。我已经试着挖掘了很多问题,但大多数答案都利用了这一点

如果有任何关于如何解决这个问题的建议,那就太好了。我很快就会发布我的发现

以下是我目前得到的信息:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

void anagrams(const vector<string>& vOne, const vector<string>& vTwo){
for(int i=0; i< vOne.size(); i++){
    for(int j=0; j< vTwo.size(); j++){
        if(vOne[i].size() != vTwo[j].size()){
            cout << 0 << endl;
        }
        else {
            cout << 1 << endl;
        }
    }
  }
}
void quicksort(vector<int>& a, int low, int high){
    if(low < high)
    {
        int mid = (low + high)/2;
        int pivot = a[mid];
        swap(a[high], a[mid]);

        int i, j;

        for(i=low, j=high-1; ;){
            while(a[i]<pivot) ++i;
            while(j>i && pivot < a[j]) --j;
            if (i < j)
                swap(a[i++], a[j--]);
            else
                break;
        }

        swap(a[i], a[high]);
    } 
    quicksort(a, low, i - 1);
    quicksort(a, i + 1, high);
}
#包括
#包括
#包括
使用名称空间std;
无效字谜(常量向量和vOne、常量向量和vTwo){
对于(int i=0;icout如果你愿意使用C++11,这里有一些非常低效的代码,用于查看两个字符串是否是字谜。我将让你自己循环浏览单词列表

#include <iostream>
#include <vector>

using namespace std;

int count_occurrences(string& word, char search) {
    int count = 0;
    for (char s : word) {
        if (s == search) {
            count++;
        }
    }
    return count;
}

bool compare_strings(string word1, string v2) {       
    if (word1.size() != v2.size())
    {
        return false;
    }    
    for (char s: word1) //In case v1 contains letters that are not in v2
    {
        if (count_occurrences(word1, s) != count_occurrences(v2, s))
        {
            return false;
        }
    }        

    return true;
}

int main() {
    string s1 = "bat";
    string s2 = "atb";

    bool result = compare_strings(s1, s2);

    if (result)
    {
        cout << "Match" << endl;
    }
    else
    {
        cout << "No match" << endl;
    }

}
#包括
#包括
使用名称空间std;
int count_出现次数(字符串和单词、字符搜索){
整数计数=0;
for(chars:word){
如果(s==搜索){
计数++;
}
}
返回计数;
}
bool比较_字符串(字符串word1,字符串v2){
如果(word1.size()!=v2.size())
{
返回false;
}    
for(char s:word1)//如果v1包含不在v2中的字母
{
if(count_出现次数(word1,s)!=count_出现次数(v2,s))
{
返回false;
}
}        
返回true;
}
int main(){
字符串s1=“bat”;
字符串s2=“atb”;
bool result=比较字符串(s1,s2);
如果(结果)
{

cout如果你愿意使用C++11,这里有一些非常低效的代码,用于查看两个字符串是否是字谜。我将让你自己循环浏览单词列表

#include <iostream>
#include <vector>

using namespace std;

int count_occurrences(string& word, char search) {
    int count = 0;
    for (char s : word) {
        if (s == search) {
            count++;
        }
    }
    return count;
}

bool compare_strings(string word1, string v2) {       
    if (word1.size() != v2.size())
    {
        return false;
    }    
    for (char s: word1) //In case v1 contains letters that are not in v2
    {
        if (count_occurrences(word1, s) != count_occurrences(v2, s))
        {
            return false;
        }
    }        

    return true;
}

int main() {
    string s1 = "bat";
    string s2 = "atb";

    bool result = compare_strings(s1, s2);

    if (result)
    {
        cout << "Match" << endl;
    }
    else
    {
        cout << "No match" << endl;
    }

}
#包括
#包括
使用名称空间std;
int count_出现次数(字符串和单词、字符搜索){
整数计数=0;
for(chars:word){
如果(s==搜索){
计数++;
}
}
返回计数;
}
bool比较_字符串(字符串word1,字符串v2){
如果(word1.size()!=v2.size())
{
返回false;
}    
for(char s:word1)//如果v1包含不在v2中的字母
{
if(count_出现次数(word1,s)!=count_出现次数(v2,s))
{
返回false;
}
}        
返回true;
}
int main(){
字符串s1=“bat”;
字符串s2=“atb”;
bool result=比较字符串(s1,s2);
如果(结果)
{

cout如果你愿意使用C++11,这里有一些非常低效的代码,用于查看两个字符串是否是字谜。我将让你自己循环浏览单词列表

#include <iostream>
#include <vector>

using namespace std;

int count_occurrences(string& word, char search) {
    int count = 0;
    for (char s : word) {
        if (s == search) {
            count++;
        }
    }
    return count;
}

bool compare_strings(string word1, string v2) {       
    if (word1.size() != v2.size())
    {
        return false;
    }    
    for (char s: word1) //In case v1 contains letters that are not in v2
    {
        if (count_occurrences(word1, s) != count_occurrences(v2, s))
        {
            return false;
        }
    }        

    return true;
}

int main() {
    string s1 = "bat";
    string s2 = "atb";

    bool result = compare_strings(s1, s2);

    if (result)
    {
        cout << "Match" << endl;
    }
    else
    {
        cout << "No match" << endl;
    }

}
#包括
#包括
使用名称空间std;
int count_出现次数(字符串和单词、字符搜索){
整数计数=0;
for(chars:word){
如果(s==搜索){
计数++;
}
}
返回计数;
}
bool比较_字符串(字符串word1,字符串v2){
如果(word1.size()!=v2.size())
{
返回false;
}    
for(char s:word1)//如果v1包含不在v2中的字母
{
if(count_出现次数(word1,s)!=count_出现次数(v2,s))
{
返回false;
}
}        
返回true;
}
int main(){
字符串s1=“bat”;
字符串s2=“atb”;
bool result=比较字符串(s1,s2);
如果(结果)
{

cout如果你愿意使用C++11,这里有一些非常低效的代码,用于查看两个字符串是否是字谜。我将让你自己循环浏览单词列表

#include <iostream>
#include <vector>

using namespace std;

int count_occurrences(string& word, char search) {
    int count = 0;
    for (char s : word) {
        if (s == search) {
            count++;
        }
    }
    return count;
}

bool compare_strings(string word1, string v2) {       
    if (word1.size() != v2.size())
    {
        return false;
    }    
    for (char s: word1) //In case v1 contains letters that are not in v2
    {
        if (count_occurrences(word1, s) != count_occurrences(v2, s))
        {
            return false;
        }
    }        

    return true;
}

int main() {
    string s1 = "bat";
    string s2 = "atb";

    bool result = compare_strings(s1, s2);

    if (result)
    {
        cout << "Match" << endl;
    }
    else
    {
        cout << "No match" << endl;
    }

}
#包括
#包括
使用名称空间std;
int count_出现次数(字符串和单词、字符搜索){
整数计数=0;
for(chars:word){
如果(s==搜索){
计数++;
}
}
返回计数;
}
bool比较_字符串(字符串word1,字符串v2){
如果(word1.size()!=v2.size())
{
返回false;
}    
for(char s:word1)//如果v1包含不在v2中的字母
{
if(count_出现次数(word1,s)!=count_出现次数(v2,s))
{
返回false;
}
}        
返回true;
}
int main(){
字符串s1=“bat”;
字符串s2=“atb”;
bool result=比较字符串(s1,s2);
如果(结果)
{

cout虽然您不能使用sort,但是您仍然应该对要检查的单词进行排序,以查看它们是否是字谜。您只需对字符[]进行排序即可手动,这是不幸的,但也是一个很好的练习。我会做一个谓词,一个比较两个字符串并返回true或false的函数,并使用它来检查它们是否是字谜。此外,似乎不需要打印出两个实际匹配的单词,如果这是真的,那么您可以在第一次打印时对向量中的单词进行排序读入它们,然后通过谓词函数运行它们

// Predicate
bool isMatch(const string &lhs, const string &rhs)
{
    ...sort and return lhs == rhs;
}
如果像我上面所说的那样编写函数,那么就是通过constrefere传入参数