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

2018-10-21  本文已影响55人  jdzhangxin

1.题目描述

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

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]);
  }
}
上一篇 下一篇

猜你喜欢

热点阅读