21xrx.com
2024-09-19 09:34:02 Thursday
登录
文章检索 我的文章 写文章
C++字符串操作:计算从字符串s1中删除s2出现的字符个数
2023-07-11 06:02:12 深夜i     --     --
C++ 字符串操作 删除 出现次数 计算

在C++中,字符串操作是非常常见的,这里介绍一种比较实用的字符串操作:计算从字符串s1中删除s2出现的字符个数。

首先,我们来看看如何在C++中实现字符串操作。C++中内置了一个字符串库,它提供了许多有用的字符串操作函数。这其中最常用的可能就是strlen函数了,它可以用来计算字符串的长度。除此之外,C++中还有许多其他的字符串操作函数,比如strcpy、strcat等等。

在本文的操作中,我们需要用到find函数,它可以用来查找一个字符串在另一个字符串中第一次出现的位置。我们还需要用到erase函数,它可以用来删除字符串中的某一段子串。

有了这些函数,我们就可以来实现本文的操作了。

首先,我们需要先输入两个字符串s1和s2。代码如下:


string s1, s2;

cin >> s1 >> s2;

接下来,我们需要遍历s2,在s1中删掉s2中出现的每一个字符。代码如下:


for (int i = 0; i < s2.size(); i++) {

  size_t pos = s1.find(s2[i]);

  while (pos != string::npos) {

    s1.erase(pos, 1);

    pos = s1.find(s2[i], pos);

  }

}

上面的代码中,我们首先使用find函数查找s2中每个字符在s1中第一次出现的位置。如果该字符在s1中不存在,则find函数返回string::npos。如果存在,则使用erase函数将该字符从s1中删除。然后我们再次使用find函数查找该字符在s1中的位置,直到该字符在s1中不存在为止。

最后,我们只需要用s1的长度减去原来的长度就可以得到我们需要的答案了。代码如下:


int cnt = s1.size() - s2.size();

完整代码如下:


#include <iostream>

#include <string>

using namespace std;

int main() {

  string s1, s2;

  cin >> s1 >> s2;

  for (int i = 0; i < s2.size(); i++) {

    size_t pos = s1.find(s2[i]);

    while (pos != string::npos) {

      s1.erase(pos, 1);

      pos = s1.find(s2[i], pos);

    }

  }

  int cnt = s1.size() - s2.size();

  cout << cnt << endl;

  return 0;

}

上面的代码就是我们实现本文所需的功能的完整代码了。通过这个小例子,我们可以看到C++中字符串操作的强大和便捷,同时也能够锻炼我们的编程能力。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复