HDU 1039(字符串判断 **)

Posted taskr212

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于HDU 1039(字符串判断 **)的主要内容,如果未能解决你的问题,请参考以下文章

hdu 1039 Easier Done Than Said?

hdu 1039 Easier Done Than Said?

hdu 1039 Easier Done Than Said?

HDU1039 Easier Done Than Said?

HDU 1039 Easier Done Than Said?

HDU 1039 Easier Done Than Said?