因此,假设有一个随机的,不同的字母和数字的字符串,例如"7GGG66HH"。我试图找出一种方法来检测包含在该字符串中的每个和单个数字和字母,并输出一个列表,显示每个字母或数字有多少种类型。
当我试图解决这个问题时,我试着把每个字母和数字放在一个动态数组中。这样,我就可以对数组进行排序,并统计每个字母和数字出现的次数。但问题是,有太多的可能的结果可供选择,所以我不能对每个单独的字符手动排序。此外,我不知道如何处理数组中的项,并将其与while循环关联使用。
所以这是我目前所拥有的一个单独的片段..。
int main()
{
string userInput;
cin >> userInput;
vector<string> arrayOfCharacters(0);
int x = 0;
while (x < lastElemetOfTheArray)
{
// tally up the number of each letter and number present
++x;
}
// display the number of times each letter and number was present
return 0;
}假设您输入了5AAY00UUU
预期产出将是
15
2A
1Y
20
3U注意到第一个数字是该字符出现的次数。
另外,我想知道我是否通过使用while循环和动态数组来正确地思考方向。如果有完全不同的解决方案,或者我使用了不正确的方法,那么请告诉我。谢谢!
发布于 2019-08-05 10:33:03
您可以在std::map的帮助下完成它。例如:
// define a map, key is the character, mapped value is used for counting
std::map<char, int> m;
// increase the count on every character
// if key does not already exist, std::map::operator[] would insert one with mapped value initialized as 0
for (auto c : userInput)
m[c]++;
// print out the result
for (auto const& p : m)
std::cout << p.second << p.first << std::endl;发布于 2019-08-05 10:46:25
这个字符集有多大?如果是简单的ASCII,那么您可以创建一个包含256个值的数组,在0处包含所有值。
然后:
for each(character in string){
myCountArray[character]++;
}这不能与巨大的字符集一起工作。
https://stackoverflow.com/questions/57356714
复制相似问题