给定一个字符串,每天可以记忆三个字符,求书写出整个字符串的天数。

每次确定要记忆的三个字母,并向后寻找,若有非三个字母其中一个,则重新开启一天记忆三个字母。

#include<cstdio>
#include<iostream>
using namespace std;
int t;
string s;
int main(){
scanf("%d",&t);
while(t--){
cin>>s;
char a='0',b='0',c='0';//记忆三个字母
bool f1=false,f2=false,f3=false;//三个字母是否有值
int ans=1;//刚开始天数为1
for(int i=0;i<s.size();i++){
if(f1&&f2&&f3){
if(s[i]!=a&&s[i]!=b&&s[i]!=c){//如果是未记忆,重新开启一轮
f1=false;
f2=false;
f3=false;//恢复状态
ans++;//天数+1
a='0';
b='0';
c='0';
}
else continue;
}
if(!f1&&s[i]!=b&&s[i]!=c){//寻找需记忆的三个字母
a=s[i];
f1=true;
continue;
}
if(!f2&&s[i]!=a&&s[i]!=c){
b=s[i];
f2=true;
continue;
}
if(!f3&&s[i]!=a&&s[i]!=b){
c=s[i];
f3=true;
continue;
}
}
printf("%d\n",ans);
}
return 0;
}

最新文章

  1. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
  2. bzoj 3821: 玄学
  3. 深入理解计算机系统-从书中看到了异或交换ab两个值的新感
  4. 智能手机Web开发笔记
  5. 《Linux内核分析》 week2作业-时间片轮转
  6. if分支的四种形式
  7. C++数据类型简析
  8. PHP关联数组和哈希表(hash table) 未指定
  9. Hibernate 一对多注解 mappedby 作用
  10. 【Android-UI】包含多个子View时触发父节点的焦点事件
  11. 初识JAVA——方法声明和调用
  12. 持续代码质量管理-SonarQube Scanner部署
  13. 【LOJ#6072】苹果树(矩阵树定理,折半搜索,容斥)
  14. Kaldi中的L2正则化
  15. 032 HDFS中高可用性HA的讲解
  16. 如何干净卸载mysql
  17. Centos7.x Docker桥接网络
  18. centos nfs配置备忘
  19. 零基础学软件测试V2.0
  20. WebGL编程指南案例解析之绘制三角形

热门文章

  1. Docker系列教程02-操作Docker容器
  2. animation—延迟和持续时间
  3. Centos7最小化安装报错There are no enabled repos. Run &quot;yum repolist all&quot; to see the repos you have.解决办法
  4. git rename branch
  5. 运维:OAAS
  6. linux篇-linux mysql数据库定时备份
  7. 好客租房30-事件绑定this指向(箭头函数)
  8. 记 iTextSharp 剪裁 PDF 指定区域的方法
  9. ATM+购物车项目流程
  10. .Net分表分库动态化处理