• hihoCoder 1039字符消除 (字符串处理)


    http://hihocoder.com/problemset/problem/1039

    因为字符串只由3种字母组成,并且插入的字符也只能是这三种字符的其中一个,那么可以考虑枚举这三个字符其中一个字符到字符串中任意一个位置。如果可以消除则不断消除,最后更新求得一个最大值。

    首先介绍这个函数  substr    substr(start,length);  返回一个从指定位置开始,并具有指定长度的字符串。

    start 必选。所需子字符串的起始位置,字符串的第一个字符的索引为0.

    length可选项。返回子字符串中包含的字符数。

    如果length为0或负数,将返回一个空字符串,如果没有指定该参数,则子字符串会延续到字符串的末尾。

     1 #include<iostream>
     2 #include<string>
     3 #include<cstdio>
     4 using namespace std;
     5 
     6 char in[3]={'A','B','C'};
     7 string getstring(string str)
     8 {
     9     int l=str.length();
    10     if(l<=1) return str; //这里需要注意
    11     string ss="";
    12     for(int i=0;i<l-1;i++)
    13     {
    14         if(str[i]==str[i+1])
    15         {
    16             while(i+1<l&&str[i]==str[i+1]) i++;
    17         }
    18         else ss+=str[i];
    19     }
    20     if(str[l-1]!=str[l-2]) ss+=str[l-1];
    21     return ss;
    22 }
    23 int main()
    24 {
    25     //freopen("a.txt","r",stdin);
    26     int t,max;
    27     string s;
    28     cin>>t;
    29     while(t--)
    30     {
    31         cin>>s;
    32         max=0;
    33         for(int i=0;i<s.length()-1;i++)
    34         {
    35             for(int j=0;j<3;j++)  //两重循环枚举。
    36             {
    37                 string str=s.substr(0,i+1)+in[j]+s.substr(i+1);
    38                 int len=str.length();
    39                 str=getstring(str);
    40                 while(len>str.length())
    41                 {
    42                     len=str.length();
    43                     str=getstring(str);
    44                 }
    45                 if(s.length()-len+1>max)  max=s.length()-len+1;
    46             }
    47         }
    48         cout<<max<<endl;
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    区块链的入门
    数组元素查找(查找指定元素第一次在数组中出现的索引)
    数组查表法之根据键盘录入索引,查找对应星期
    数组元素反转
    数组获取最大值
    数组的遍历
    数组操作的两个常见小问题越界和空指针
    方法重载练习比较数据是否相等
    方法之根据键盘录入的数据输出对应的乘法表
    方法之根据键盘录入的行数和列数,在控制台输出星形
  • 原文地址:https://www.cnblogs.com/nowandforever/p/4415647.html
Copyright © 2020-2023  润新知