题目大意:
  给你一串仅包含'J''O''I'的字符串,问满足三种字符出现次数相等的最大字串是多少?

思路:
  用map存一下出现次数前缀和两两之差出现的最早位置,每次看一下当前的两两之差最早的出现位置是多少。

 #include<map>
#include<cstdio>
#include<cctype>
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'';
while(isdigit(ch=getchar())) x=(((x<<)+x)<<)+(ch^'');
return x;
}
inline char getalpha() {
register char ch;
while(!isalpha(ch=getchar()));
return ch;
}
std::map<std::pair<int,int>,int> map;
int main() {
const int n=getint();
int ans=;
map[std::make_pair(,)]=;
for(register int i=,s[]={,,};i<=n;i++) {
char ch=getalpha();
if(ch=='J') s[]++;
if(ch=='O') s[]++;
if(ch=='I') s[]++;
std::pair<int,int> p=std::make_pair(s[]-s[],s[]-s[]);
if(map.count(p)) {
ans=std::max(ans,i-map[p]);
} else {
map[p]=i;
}
}
printf("%d\n",ans);
return ;
}

最新文章

  1. 使用reflux进行react组件之间的通信
  2. JAVA_Collection容器
  3. HBuilder打包ios应用
  4. 【Go】http server 性能测试
  5. 文件频繁IO能有多大的差别
  6. mysql 5.7 多源复制 原创
  7. less 能加快css编写?
  8. React组件一
  9. cocos2d/-x 用CCRenderTexture为一个CCLabelTTF创建阴影。
  10. MVC 检测用户是否登录
  11. Android ProgressBar 反向进度条/进度条从右到左走
  12. Q_DISABLE_COPY
  13. C语言嵌套循环
  14. Linux上安装Libssh2
  15. Linux学习之CentOS(十六)-----内存置换空间(swap)之建置(转)
  16. 如何实现Echart不刷新页面,多语言切换下的地图数据重新加载,api请求数据加载,soketed数据实时加载
  17. js 监听手机端键盘弹出和收起事件
  18. FTP(虚拟用户,并且每个虚拟用户可以具有独立的属性配置)
  19. Android SDK版本号 与 API Level 对应关系
  20. SQL Server 损坏修复 之一 常见错误解读

热门文章

  1. 使用T4模板生成MySql数据库实体类
  2. java封装的使用
  3. [Leetcode Week9]Word Break II
  4. Codeforces #107 DIV2 ABCD
  5. appium===setup/setupclass的区别,以及@classmathod的使用方法
  6. platform_driver_register,什么时候调用PROBE函数 注册后如何找到驱动匹配的设备【转】
  7. Perl的Expect模块学习
  8. StringUtils工具类的使用
  9. PL/SQL 05 存储过程 procedure
  10. SSM+Maven的JavaWeb项目中的异常的可能性