美文网首页
[15无验证]字符串处理-七牛云2018秋

[15无验证]字符串处理-七牛云2018秋

作者: jdzhangxin | 来源:发表于2018-10-21 18:23 被阅读55次

1.题目描述

给定一个只包含大写英文字母的字符串s,按照以下规则消除:
1)如果s包含长度为2的由相同字母组成的子串,那么这些子串会被消除,余下的子串拼成新的字符串。
例如"ABCCBCCCAA""CC","CC""AA"会被同时消除,余下"AB","C""B"拼成新的字符串"ABBC"
2)重复上述操作,直到新的字符串不包含相邻的相同字符为止。
例如”ABCCBCCCAA”经过一轮消除得到"ABBC",再经过一轮消除得到"AC"

  • 输入描述:
    第一行输入一个正整数T(1<=T<=50),表示有T组测试数据.
    对于每组测试数据输入只有一行,由大写字母组成的字符串s,长度不超过100.
  • 输出描述:
    对于每组测试数据,若最后可以把整个字符串全部消除,就输出Yes,否则输出No.
  • 输入样例:
    2
    ABCCBA
    ABCCCCCBBBBB
    
  • 输出样例:
    Yes
    No
    

2.题目解析

简单字符串遍历

3.参考答案

#include <bits/stdc++.h>
using namespace std;
void solve(string s){
    while(true){
        string res;
        for(int i=0;i<s.size();++i){
            if(s[i] != s[i+1]){
                res.append(1,s[i]);
            }else{
                ++i;// 过掉当前和下一个。
            }
        }
        if(res == s) break;// 表示相邻字符没有重复
        else s = res;
    }
    if(s.empty())
        printf("Yes\n");
    else
        printf("No\n");
}
int main() {
  int t = 0;
  scanf("%d", &t);
  string strs[t];
  for(int i=0;i!=t;++i){
    cin >> strs[i];
  }

  for(int i=0;i!=t;++i){
    solve(strs[i]);
  }
}

相关文章

网友评论

      本文标题:[15无验证]字符串处理-七牛云2018秋

      本文链接:https://www.haomeiwen.com/subject/uqrwoftx.html