C++程序检查字符串是否完全由字母组成


假设我们有一个包含n个小写字母的字符串S。如果一个字符串遵循以下规则,则称其为严格字母顺序的字符串:

  • 创建一个空字符串T。

  • 然后执行接下来的n次步骤:

  • 在第i步,取拉丁字母表中的第i个小写字母c,将其插入到字符串T的左侧或右侧。

我们需要检查S是否为严格字母顺序的字符串。

问题类别

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

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

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

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

步骤

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

len := size of S
for initialize i := len, when i >= 1, update (decrease i by 1), do:
   if S[l] is the i th character, then:
      (increase l by 1)
   otherwise when S[r] is the ith character, then:
      (decrease r by 1)
   Otherwise
      Come out from the loop
if i is same as 0, then:
   return true
Otherwise
   return false

示例

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

#include <bits/stdc++.h>
using namespace std;
bool solve(string S){
   int len = S.size(), l = 0, r = len - 1, i;
   for (i = len; i >= 1; i--){
      if (S[l] - 'a' + 1 == i)
         l++;
      else if (S[r] - 'a' + 1 == i)
         r--;
      else
         break;
   }
   if (i == 0)
      return true;
   else
      return false;
}
int main(){
   string S = "ihfcbadeg";
   cout << solve(S) << endl;
}

输入

"ihfcbadeg"

输出

1

更新于: 2022年4月8日

278 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告