51nod 1393 0和1相等串
来源:互联网 发布:adc0804连单片机 编辑:程序博客网 时间:2024/06/05 14:30
题目大意
给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等。
Input
一个字符串,只包含01,长度不超过1000000。
Output
一行一个整数,最长的0与1的个数相等的子串的长度。
Input示例
1011
Output示例
2
分析
把0当成-1,然后求前缀和。如果出现前缀和相等的,那么这个串肯定就满足要求。因为只要求最长的,所以只需要存前缀和首次出现的位置即可,之后再遇到就可以直接更新答案。
代码
#include <bits/stdc++.h>#define N 2000010int sum[N];char ch[N * 2];int main(){ gets(ch); memset(sum,-1,sizeof(sum)); sum[strlen(ch)] = 0; int ans = 0; int last = strlen(ch); for (int i = 0; i < strlen(ch); i++) { if (ch[i] == '0') last--; else last++; if (sum[last] > -1) ans = std::max(ans, i - sum[last] + 1); else sum[last] = i + 1; } printf("%d\n",ans);}
0 0
- 51nod 0和1相等串
- 51nod 1393 0和1相等串(前缀和)
- 51NOD 1393 0和1相等串
- 51nod 1393:0和1相等串
- 51nod 1393 0和1相等串 (连续区间)
- 51nod 1393 0和1相等串
- 51Nod-1393-0和1相等串
- 51nod 1393 0和1相等的串
- 51nod oj 1393 0和1相等串 【贪心】
- 51Nod 1393 0和1相等串
- 51nod 1393 0和1相等串(鸽巢)
- 51nod 1393 0和1相等串
- 51nod-【1393 0和1相等串】
- 51nod 1393 0和1相等串【思维】
- 51Nod 1393 0和1相等串
- 51nod 1393 0和1相等串
- 51nod 1393 0和1相等串 思路
- 51nod 1393 0和1相等串
- 卡拉兹(Callatz)猜想
- 浅谈Java内部类的四个应用场景
- android 阴影效果
- 把本地项目提交到 github 上
- Js bug 小结
- 51nod 1393 0和1相等串
- transient关键字
- Dubbo的Zookeeper单机配置和Zookeeper集群配置
- 360面试题——猜数
- Java同步工具类——栅栏[CyclicBarrier]
- 实验三 无损数据压缩编解码实验(Huffman编解码)
- Tomcat启动时报java.io.EOFException
- 等价二叉树
- 257. Binary Tree Paths