C++程序检查愚人节新闻是假的还是真的


假设我们有一个包含n个字符的字符串S。因为今天是四月一日,Amal怀疑她今天读到的新闻是假的,并且不想在所有参赛者面前出丑。他知道,如果一条新闻包含“fool”作为子序列,那么这条新闻就是假的。我们必须检查新闻是否真的是假的。

问题类别

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

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

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

因此,如果我们问题的输入类似于S = "domibecomesfool",则输出将为True,因为新闻是假的。

步骤

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

flag := 0
T := "fool"
for initialize i := 0, when S[i] is non-zero and T[flag] is non-zero, update (increase i by 1), do:
   if S[i] is same as T[flag], then:
      (increase flag by 1)
if flag is same as 4, then:
   return true
return false

示例

让我们看一下以下实现以获得更好的理解:

#include <bits/stdc++.h>
using namespace std;
bool solve(string S){
   int flag = 0;
   string T = "fool";
   for (int i = 0; S[i] && T[flag]; i++){
      if (S[i] == T[flag])
         flag++;
   }
   if (flag == 4)
      return true;
   return false;
}
int main(){
   string S = "domibecfooomesl";
   cout << solve(S) << endl;
}

输入

"domibecfooomesl"

输出

1

更新于: 2022年4月8日

172 次查看

开启你的职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.