码迷,mamicode.com
首页 > 编程语言 > 详细

偶串--牛客网(秋招备战专场三模)-C++方向

时间:2017-07-25 22:36:13      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:log   个数   string   while   stream   name   cout   color   解题思路   

题目描述:由两个完全一样的字符串组成的字符串称之为偶串,输入一个字符串,从末尾去掉若干个字符,还能构成偶串,问构成偶串的最大长度

解题思路:本题偶串,字符个数肯定为偶数个,从末尾开始删除,每次也必须删除偶数个才能保证可能为偶串,因此删除2 4 6 等等
定义start为起始位置,mid为偶串中的右部分串的起始点,每次从末尾去掉2个,然后更新mid,d(删除个数),然后判断是否为偶串,是则结束,输出s.size()-d,不是,则继续查找,直到结束

 1 #include <iostream>
 2 #include <string.h>
 3 using namespace std;
 4 bool isOUchuan(string str,int start1,int start2)
 5 {
 6     int end = start2;
 7     //cout<<end<<endl;
 8     bool flag = true;
 9     while(start1 < end)
10     {
11         if(str[start1] != str[start2])
12         {
13             flag = false;
14             break;
15         }
16         start1++;
17         start2++;
18     }
19     /*if(flag)
20         cout<<"true"<<endl;
21     else
22         cout<<"false"<<endl;*/
23     return flag;
24 }
25 int main()
26 {
27     string s;
28     cin>>s;
29     int start = 0;
30     int n = s.size();
31     int mid = (start+n)/2;
32     int d = 2;
33     n = n - d;
34     while(n>0)
35     {
36         //cout<<"mid"<<mid<<endl;
37         if(isOUchuan(s,start,mid-1))
38         {
39             break;
40         }
41         else
42         {
43             d +=2;
44             mid = mid-1;
45             n = n - 2;
46         }
47     }
48     cout<<s.size()-d<<endl;
49     return 0;
50 }

 

偶串--牛客网(秋招备战专场三模)-C++方向

标签:log   个数   string   while   stream   name   cout   color   解题思路   

原文地址:http://www.cnblogs.com/qqky/p/7236452.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!