最长元音子串的长度
题目描述
【最长元音子串的长度】定义:当一个字符串只有元音字母(aeiouAEIOU)组成,称为元音字符串。现给定一个字 符串,请找出其中最长的元音字符串,并返回其长度;
如果找不到,则返回 0。子串:字符串中任意一个连续的字符组成的子序列称为该字符串的子串。
注意:
输入描述:
一个字符串,其长度范围:0<length<65535。
字符串仅由字母a-z和A-Z组成。
输出描述:
一个整数,表示最长的元音字符串的长度。
示 例:
输入
asdbuiodevauufgh
输出
3
一个字符串,其长度范围:0<length<65535。
字符串仅由字母a-z和A-Z组成。
输出描述:
一个整数,表示最长的元音字符串的长度。
示 例:
输入
asdbuiodevauufgh
输出
3
C++
#include<bits/stdc++.h> #include<string> using namespace std; bool isAstr(char & s); int main() { string inputs; getline(cin, inputs); transform(inputs.begin(), inputs.end(), inputs.begin(),::tolower); //transform(inputs.begin(), inputs.end(), inputs.begin(), ::toupper); //1找到最长元音子串 int maxLen = 0; for (int i = 0; i < inputs.length(); i++) { if(isAstr(inputs[i])) { for (int j = i + 1; j < inputs.length(); j++) { if(!isAstr(inputs[j])) { maxLen = max(maxLen, j - i); i = j; break; } if(j == inputs.length() - 1) { maxLen = max(maxLen, j - i + 1); i = j; } } } } cout << "最大元音子串为:" << maxLen << endl; //2加大难度,找出全部元音子串,解法类似子集 //对于本题,只需返回最长的元音子串的长度。 system("pause"); return 0; } bool isAstr(char & s) { if(s == 'a' || s == 'e' || s == 'i' || s == 'o' || s == 'u') { return true; } return false; }