首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检测字符串中的不同字母和数字

如何检测字符串中的不同字母和数字
EN

Stack Overflow用户
提问于 2019-08-05 10:27:28
回答 2查看 131关注 0票数 2

因此,假设有一个随机的,不同的字母和数字的字符串,例如"7GGG66HH"。我试图找出一种方法来检测包含在该字符串中的每个和单个数字和字母,并输出一个列表,显示每个字母或数字有多少种类型。

当我试图解决这个问题时,我试着把每个字母和数字放在一个动态数组中。这样,我就可以对数组进行排序,并统计每个字母和数字出现的次数。但问题是,有太多的可能的结果可供选择,所以我不能对每个单独的字符手动排序。此外,我不知道如何处理数组中的项,并将其与while循环关联使用。

所以这是我目前所拥有的一个单独的片段..。

代码语言:javascript
运行
复制
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

预期产出将是

代码语言:javascript
运行
复制
15
2A
1Y
20
3U

注意到第一个数字是该字符出现的次数。

另外,我想知道我是否通过使用while循环和动态数组来正确地思考方向。如果有完全不同的解决方案,或者我使用了不正确的方法,那么请告诉我。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-05 10:33:03

您可以在std::map的帮助下完成它。例如:

代码语言:javascript
运行
复制
// 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;

活着

票数 0
EN

Stack Overflow用户

发布于 2019-08-05 10:46:25

这个字符集有多大?如果是简单的ASCII,那么您可以创建一个包含256个值的数组,在0处包含所有值。

然后:

代码语言:javascript
运行
复制
for each(character in string){
    myCountArray[character]++;
}

这不能与巨大的字符集一起工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57356714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档