题意是检查一个字符串是否满足三个条件:
一、至少有一个元音字母。二、不能出现三个连续的元音或三个连续的辅音。三、除了 ee 和 oo 外不能出现两个连续相同字母。
若三个条件都能满足,该字符串满足条件,有一个条件不满足则该字符串不满足条件。
但是这道题的数据......一定有元音字母,长度一定不少于 3。省去很多麻烦......
代码如下:
1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int len; 6 bool f; 7 std::ios::sync_with_stdio(false); 8 string s; 9 while(cin>>s) 10 { 11 if(s=="end") break; 12 len = s.length(); 13 f = true; 14 // if(len==1) 15 // { 16 // if(s[0]!=‘a‘&&s[0]!=‘e‘&&s[0]!=‘i‘&&s[0]!=‘o‘&&s[0]!=‘u‘) 17 // { 18 // cout << "<" << s << "> is not acceptable.\n"; 19 // continue; 20 // } 21 // else 22 // { 23 // cout << "<" << s << "> is acceptable.\n"; 24 // continue; 25 // } 26 // } 27 // else if(len==2) 28 // { 29 // if((s[0]==s[1]&&s[0]!=‘e‘&&s[0]!=‘o‘)||(s[0]!=‘a‘&&s[0]!=‘e‘&&s[0]!=‘i‘&&s[0]!=‘o‘&&s[0]!=‘u‘&&s[1]!=‘a‘&&s[1]!=‘e‘&&s[1]!=‘i‘&&s[1]!=‘o‘&&s[1]!=‘u‘)) 30 // { 31 // cout << "<" << s << "> is not acceptable.\n"; 32 // continue; 33 // } 34 // else 35 // { 36 // cout << "<" << s << "> is acceptable.\n"; 37 // continue; 38 // } 39 // } 40 // else 41 { 42 for(int i = 0; i < len-2; ++i) 43 { 44 if(s[i]==‘a‘||s[i]==‘e‘||s[i]==‘i‘||s[i]==‘o‘||s[i]==‘u‘) 45 { 46 if(s[i+1]==‘a‘||s[i+1]==‘e‘||s[i+1]==‘i‘||s[i+1]==‘o‘||s[i+1]==‘u‘) 47 if(s[i+2]==‘a‘||s[i+2]==‘e‘||s[i+2]==‘i‘||s[i+2]==‘o‘||s[i+2]==‘u‘) 48 { 49 f = false; 50 break; 51 } 52 } 53 else 54 { 55 if(s[i+1]!=‘a‘&&s[i+1]!=‘e‘&&s[i+1]!=‘i‘&&s[i+1]!=‘o‘&&s[i+1]!=‘u‘) 56 if(s[i+2]!=‘a‘&&s[i+2]!=‘e‘&&s[i+2]!=‘i‘&&s[i+2]!=‘o‘&&s[i+2]!=‘u‘) 57 { 58 f = false; 59 break; 60 } 61 } 62 if(s[i]==s[i+1]) 63 if(s[i]!=‘e‘&&s[i]!=‘o‘) 64 { 65 f = false; 66 break; 67 } 68 } 69 if(s[len-2] == s[len-1]) 70 if(s[len-1]!=‘e‘&&s[len-1]!=‘o‘) f = false; 71 if(s[len-3]==‘a‘||s[len-3]==‘e‘||s[len-3]==‘i‘||s[len-3]==‘o‘||s[len-3]==‘u‘) 72 { 73 if(s[len-2]==‘a‘||s[len-2]==‘e‘||s[len-2]==‘i‘||s[len-2]==‘o‘||s[len-2]==‘u‘) 74 if(s[len-1]==‘a‘||s[len-1]==‘e‘||s[len-1]==‘i‘||s[len-1]==‘o‘||s[len-1]==‘u‘) 75 f = false; 76 } 77 else 78 { 79 if(s[len-2]!=‘a‘&&s[len-2]!=‘e‘&&s[len-2]!=‘i‘&&s[len-2]!=‘o‘&&s[len-2]!=‘u‘) 80 if(s[len-1]!=‘a‘&&s[len-1]!=‘e‘&&s[len-1]!=‘i‘&&s[len-1]!=‘o‘&&s[len-1]!=‘u‘) 81 f = false; 82 } 83 } 84 if(!f) cout << "<" << s << "> is not acceptable.\n"; 85 else cout << "<" << s << "> is acceptable.\n"; 86 } 87 return 0; 88 }
原文地址:https://www.cnblogs.com/Taskr212/p/9566335.html
时间: 2024-10-15 09:02:38