C++程序:计算使文件名有效的操作次数


假设我们有一个包含n个字母的字符串S。Amal正试图在一个社交网络上发送一个文件,但是出现了一个意想不到的问题。如果文件名包含三个或三个以上连续的“x”,系统认为文件内容与社交网络不符。我们有文件名S,我们需要检查要删除的最小字符数,以便名称不包含“xxx”作为子字符串。

问题类别

为了解决这个问题,我们需要操作字符串。编程语言中的字符串是一系列存储在特定数组类型中的字符。几种语言将字符串指定为一种特定数据类型(例如Java、C++、Python);而其他一些语言则将字符串指定为字符数组(例如C)。字符串在编程中非常重要,因为它们通常是各种应用程序中首选的数据类型,并且用作输入和输出的数据类型。有各种字符串操作,例如字符串搜索、子字符串生成、字符串剥离操作、字符串转换操作、字符串替换操作、字符串反转操作等等。查看下面的链接,了解如何在C/C++中使用字符串。

https://tutorialspoint.com/cplusplus/cpp_strings.htm

https://tutorialspoint.com/cprogramming/c_strings.htm

因此,如果我们问题的输入类似于S = "lkxxxiii",则输出将为1,因为我们可以得到有效的字符串"lkxxiii"。

步骤

为了解决这个问题,我们将遵循以下步骤:

c := 0
n := size of S
for initialize i := 0, when i < n - 2, update (increase i by 1), do:
   if substring of S of size 3, starting from index i to is same as "xxx", then:
      (increase c by 1)
return c

示例

让我们看看下面的实现,以便更好地理解:

#include <bits/stdc++.h>
using namespace std;
int solve(string S){
   int c = 0;
   int n = S.size();
   for (int i = 0; i < n - 2; i++){
      if (S.substr(i, 3) == "xxx")
         c++;
   }
   return c;
}
int main(){
   string S = "lkxxxiii";
   cout << solve(S) << endl;
}

输入

"lkxxxiii"

输出

1

更新于:2022年4月8日

浏览量:134

开启您的职业生涯

完成课程获得认证

开始学习
广告