C++ 用向量求解C++;
我有一个函数,它接受字符串的两个向量,并比较每个元素,看看它们是否是彼此的字谜 向量1:“bat”、“add”、“zyz”、“aaa” 向量2:选项卡、dad、xyx、bbb 限制和其他需要澄清的事项:函数应该循环两个向量并比较字符串。我只需要根据每个向量的索引进行比较;这意味着我只比较第一个索引中的字符串,然后比较第二个索引中的字符串,依此类推。可以安全地假设作为参数传入的向量总是相同的大小 如果比较的字符串是字谜,则屏幕上会打印“匹配”。如果不匹配,则打印“不匹配” 输出:匹配不匹配不匹配 我在这个问题上陷入了荒谬的困境,我知道如何反转字符串,但当它变成这个问题时,我就有点不知所措了 我知道我需要遍历每个向量,然后进行比较。但是我怎样才能比较字符串中的每个字母呢?此外,我不允许包含任何其他内容,如算法、排序或集合。我已经试着挖掘了很多问题,但大多数答案都利用了这一点 如果有任何关于如何解决这个问题的建议,那就太好了。我很快就会发布我的发现 以下是我目前得到的信息:C++ 用向量求解C++;,c++,vector,C++,Vector,我有一个函数,它接受字符串的两个向量,并比较每个元素,看看它们是否是彼此的字谜 向量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;i 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如果你愿意使用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传入参数