检查字符串是否包含连续字母,并且每个字母只出现一次
简介
在 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 个位置的字符 ch 和第 i-1 个位置的字符 ch1。
如果这两个字符之间的差值不等于 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
结论
字符串中持续出现的字符是同时出现的字母。这可以通过对字符串从头到尾进行排序来实现。可以很容易地比较连续位置的字符,并检查它们相差多少位置。这可以用来获取字符串是否是连续的信息。