这道题目灰常简单,我们先从最简单的3个字符串开始

有以下几种情况:

可以看到,只有在中间是O的情况下才有可能变成MOO

辣么我们不妨在在s串中枚举这个中间 O

每枚举到一个就看看能不能用他的本身操作次数加上删除旁边的字符次数得出的实际操作次数来更新ans(取min)(记得在for开始前判断s长度是否<3,<3就return -1)

最后如果ans还是开始的那个值return -1,else return ans;

程序:

#include<bits/stdc++.h>
using namespace std;
int s1(string s)
{
int ans=0x3f3f3f3f,n=s.size();
if(n<3) return -1;
for(int i=0;i<n;i++)
{
if(s[i]=='O'&&i-1>=0&&i+1<n)
{
if(s[i-1]=='M'&&s[i+1]=='O') ans=min(ans,n-3);
else if(s[i-1]=='O'&&s[i+1]=='M') ans=min(ans,n-1);
else if(s[i-1]=='M'&&s[i+1]=='M') ans=min(ans,n-2);
else if(s[i-1]=='O'&&s[i+1]=='O') ans=min(ans,n-2);
}
}
if(ans>0x3f3f3f3f/2+1) return -1;
else return ans;
}
int main()
{
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
string s;
cin>>s;
cout<<s1(s)<<endl;
}
return 0;
}

最新文章

  1. 01 - 初探JavaScript魅力
  2. alwaysOn为什么不支持分布式事务
  3. 【Excel】Excel根据单元格背景色求和
  4. 锋利的jQuery-1--解决jquery库和其他库的冲突
  5. JAVA 集合List,数组,Set,Map,直接的相互转换
  6. svn: E200030: sqlite[S10]: disk I/O error
  7. 快速构建Windows 8风格应用5-ListView数据控件
  8. php 执行效率
  9. ajax三级联动下拉菜单
  10. Linux系统编程:简单文件IO操作
  11. 基于xml 实现动态加载权限功能树列表---EFSFrame企业级开发架构
  12. 如何优化UI布局?
  13. 《A Knowledge-Grounded Neural Conversation Model》
  14. Python-SMTP发送邮件(HTML、图片、附件)
  15. 20145221高其_PC平台逆向破解_advanced
  16. Ubuntu jdk 8 与 6 切换 (安装与配置)
  17. php $_SERVER[&#39;HTTP_USER_AGENT&#39;]
  18. [GO]go context的deadline方法
  19. sql server数据库字段名要注意不能叫file
  20. 兄弟ifream的方法调用

热门文章

  1. 关于.Net和Java的看法-一个小实习生经历
  2. 【lwip】12-一文解决TCP原理
  3. ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置
  4. AArch32/AArch64系统级内存模型(三)
  5. MyBatis02:流程分析、注解、代理dao实现CRUD、参数深入、传统DAO、配置
  6. typora软件下载跟安装
  7. C# Log4net配置文件 总结
  8. Python + logging 控制台有日志输出,但日志文件中数据为空
  9. 比Sqoop功能更加强大开源数据同步工具DataX实战
  10. 就聊聊不少小IT公司的技术总监