C++ 检查字符串是否包含连续字母,并且每个字母仅出现一次
简介
C++中的字符串是由字符组成的序列,可能是不同的字符,也可能是重复的字符。连续的字符是同时出现且位置差为1的字符。例如,字符a和b是连续的,因为它们同时出现。然而,字符m和o在它们的位置上有2的差,使它们不是连续的。
在本文中,我们将开发一段代码,输入一个字符串,并在字符串中的所有字符都是连续的情况下返回true。让我们看下面的示例来更好地理解这个主题。
示例
示例1 – str – “pqsr”
输出 – 是
在本文中,我们将开发一段代码来提取字符串中的当前字符和上一个字符。然后进一步检查如果字符的位置差非等于1,则返回布尔值false。
语法
sort()
sort(str.begin(), str.end())
C++中的sort()方法用于将字符串中的字符按照从开始到结束的顺序进行排列,以递增顺序排序。
参数
str – 输入字符串
end – 字符串中出现的最后一个字符
begin – 字符串中出现的第一个字符
length()
C++中的length()方法用于计算字符串中的字符数。
str.length()
参数
str – 输入的字符串
步骤
- 接受输入字符串str。
-
使用sort()方法对输入字符串进行排序。
-
使用for循环i进行字符串的迭代。
-
使用length()方法计算字符串的长度,并将结果存储在len变量中。
-
使用for循环i对字符串进行迭代。
-
每次都提取第i个字符和第i-1个字符的区别。
-
如果这两个字符之间的差异不等于1,则返回布尔值false。
-
如果所有对应的字符都满足要求,则返回布尔值true。
-
将这个值以布尔标志res的形式返回。如果其值为true,则打印包含连续字符的字符串。
示例
以下C++代码片段用于输入一个示例字符串,并计算字符串中出现的所有字符是否连续性的:
//including the required libraries
#include <bits/stdc++.h>
using namespace std;
//function to check of characters consecutive
bool validateString(string str) {
//length of the string
int len = str.length();
// sorting the given string
sort(str.begin(), str.end());
// Iterate for every index and
// check for the condition
for (int i = 1; i < len; i++) {
//extract characters at the required pos
char ch = str[i];
char ch1 = str[i-1];
if (ch-ch1 != 1)
//in case characters are not consecutive
return false;
}
//if condition holds
return true;
}
//calling the main method
int main() {
// 1st example
string str = "mpon";
cout << "Input String : " <<str << " \n";
bool res = validateString(str);
if (res)
cout << "Yes, the string contains only consecutive characters\n";
else
cout << "No, the string doesn't contain only consecutive characters.\n";
return 0;
}
输出
Input String − mpon
Yes, the string contains only consecutive characters
结论
在一个字符串中,不断出现的字符是同时出现的字母。可以通过对字符串进行从开头到结尾的排序来实现。可以轻松比较连续位置上的字符,并检查它们相差多少个位置。这可以用来判断字符串是否连续。