用c++iostream编写程序,求出所给出的字符串中最长的字母子串(以非字母隔开)。
时间: 2023-09-11 07:11:22 浏览: 84
编写程序求出所给出的字符串中最长的字母子串(以非字母隔开)。
好的,我可以帮助您解决这个问题。以下是一个用 C++ iostream 编写的程序,可以找到所给字符串中最长的字母子串:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
getline(cin, str); // 获取输入的字符串
int max_len = 0; // 最长子串的长度
int start_index = 0; // 最长子串的起始索引
for (int i = 0; i < str.length(); i++) {
if (!isalpha(str[i])) {
// 当前字符不是字母,更新最长子串的起始索引
start_index = i + 1;
continue;
}
// 从当前位置开始向后寻找字母子串
int len = 1;
while (i + len < str.length() && isalpha(str[i + len])) {
len++;
}
// 如果找到的子串比当前最长子串更长,则更新最长子串的长度和起始索引
if (len > max_len) {
max_len = len;
start_index = i;
}
}
// 输出最长子串
string longest_substring = str.substr(start_index, max_len);
cout << "最长的字母子串是:" << longest_substring << endl;
return 0;
}
```
这个程序使用 `isalpha` 函数来判断一个字符是否是字母。它从输入字符串的开头开始遍历,如果遇到一个非字母字符,则更新最长子串的起始索引。如果遇到一个字母字符,则从当前位置开始向后寻找字母子串,并记录其长度。如果找到的子串比当前最长子串更长,则更新最长子串的长度和起始索引。最后输出最长子串。
希望这个程序能够帮助到您!
阅读全文