HDU 1039(字符串判断 **)

题意是检查一个字符串是否满足三个条件:

一、至少有一个元音字母。二、不能出现三个连续的元音或三个连续的辅音。三、除了 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.
";
19 //                continue;
20 //            }
21 //            else
22 //            {
23 //                cout << "<" << s << "> is acceptable.
";
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.
";
32 //                continue;
33 //            }
34 //            else
35 //            {
36 //                cout << "<" << s << "> is acceptable.
";
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.
";
85         else cout << "<" << s << "> is acceptable.
";
86     }
87     return 0;
88 }
View Code
原文地址:https://www.cnblogs.com/Taskr212/p/9566335.html