【问题标题】:How to find the number of common characters in two strings c++如何在两个字符串c ++中查找公共字符的数量
【发布时间】:2019-11-24 17:09:18
【问题描述】:

如果字符串 1 和字符串 2 的大小相等,我们如何找到常见字符的数量并存储到某个 int 中?

例如:

string A = "abcdabc"
string B = "cabzabc"

常见的字符数是 7 个中的 6 个(重复计数)。

到目前为止我有:

int count = 0;

for(int I = 0; I < A.size(); I++)
{
    if(A[I] == B[I]
    {
       count++;
     }
}

但是当我输出计数时它 = 0。

编辑:伙计们,我的初始化字符串有问题,但现在可以了!谢谢。

【问题讨论】:

  • 我认为您的错误在其他地方。您可能需要使用调试器来查看 `count` 发生了什么。
  • 建议:使用编译器附带的调试实用程序逐步执行程序(如果编译器未附带调试实用程序,强烈考虑使用不同的工具集)并密切关注在count.
  • 虽然你的逻辑是不正确地找出两个字符串之间的常见字符数,但是,对于给定的输入,它应该给出输出3而不是0(看看最后一个@987654326 @ 两个字符串的字符)。请发布 MCVE。

标签: c++ string for-loop char compare


【解决方案1】:

您当前计算的是这两个 char 数组在某个索引上是否具有相同的字符。这显然不是你想要的。 一些选项: 1.创建地图并存储每个字母的出现次数,然后进行比较 2.遍历一个数组,对于那里的每个字符,遍历完成其他数组并计算出现次数 3. 按字母顺序对这些数组进行排序,你会看到每个字母出现了多少次

编辑:让我们通过您的代码运行:

I = 0; A[I] = 'a'; B[I] = 'c' //are they the same? count = 0
I = 1; A[I] = 'b'; B[I] = 'a' //are they the same? count = 0
I = 2; A[I] = 'c'; B[I] = 'b' //are they the same? count = 0
I = 3; A[I] = 'd'; B[I] = 'z' //are they the same? count = 0
I = 4; A[I] = 'a'; B[I] = 'a' //are they the same? count = 1
I = 5; A[I] = 'b'; B[I] = 'b' //are they the same? count = 2
I = 6; A[I] = 'c'; B[I] = 'c' //are they the same? count = 3

【讨论】:

  • 我让它工作了,代码是正确的,我的字符串有问题!
猜你喜欢
  • 2013-04-18
  • 1970-01-01
  • 2013-09-13
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
相关资源
最近更新 更多