gpt4 book ai didi

c++ - 查找字符串 C++ 中重复字符串的总数——没有映射

转载 作者:行者123 更新时间:2023-11-28 02:08:11 24 4
gpt4 key购买 nike

我的程序必须找出字符串中重复字符串的总数。除了 length() 之外,我不能使用映射或内置字符串函数

Example : string input = "Hello hello Hello"

Hello : 2

我在用空格分隔字符串并读取它们时遇到了障碍。我不知道该写些什么来实现这一点。

我想做的是创建一个临时字符串来与下一个字符串进行比较,如果它们相等,则将其存储在一个 vector 中,然后在最后从该 vector 中读取。

我可以使用什么函数来做到这一点?

下面是我的代码:

#include<iostream>
#include<string>
#include<vector>
using namespace std;
vector <string> mystring;
int numberString(string const&in)
{
int total = 0;
char temp;
for (int i = 0; i < in.length(); i++)
{
temp = in[i];
if (temp == ' ')
total++;
}
total++;
return total;
}
void findRepeats(string const &in)
{
int numberOfStrings = numberString(in);
int asciiArray[256];
for (int i = 0; i < 256; i++)
asciiArray[i] = 0;
int counter = 0;
string temp = "blank";
while (numberOfStrings != counter)
{
temp = in;
}
}
int main()
{
string input;
cout << "Enter a string : ";
getline(cin, input);
findRepeats(input);
return 0;
}

最佳答案

计算以空格分隔的字符串中子字符串的直接方法是将它们插入映射并跟踪出现次数:

std::string input = "Hello hello Hello";
std::istringstream iss(input);
std::map<std::string, size_t> m;

std::string temp;
while(iss >> temp)
{
auto it = m.find(temp);
if(it != std::end(m))
{
++(it->second);
}
else
{
m.insert(std::make_pair(temp, 0));
}
}

//display counts as:
for(auto it = std::begin(m); it != std::end(m); ++it)
{
std::cout<<"string \""<<it->first<<"\" was found "<<it->second<<" times"<<std::endl;
}

代码未经测试。

关于c++ - 查找字符串 C++ 中重复字符串的总数——没有映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36696923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com