給定乙個0-1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。
input
乙個字串,只包含01,長度不超過1000000。output
一行乙個整數,最長的0與1的個數相等的子串的長度。input示例
1011output示例 2
準備乙個sum,如果碰到0則-1,碰到1則+1.
對於每乙個sum,記錄最早碰到時的座標。 以後如果在碰到了,那麼這兩個相同的sum之間的值就是符合條件的。這樣可以保證每次查詢都是最大的,因為只和第一次出現的值作比較,最長。
還有一點,如果碰到sum=0了,說明從開始到當前點就是
不過需要注意一點,如果一開始很多0,那麼sum是負的,我們無法儲存,所以我們所有的sum都加10000000. 這樣保證哪怕所有的字元全為0,也可以儲存。
#include
#include
#include
#include
#include
#include
using namespace std;
string s;
int vis[11110000];
int main()
if(s[i]=='1')
if(sum==0)
else
else}}
cout< 1393 0和1相等串 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。input 乙個字串,只包含01,長度不超過1000000。output 一行乙個整數,最長的0與1的個數相等的子串的長... 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。input 乙個字串,只包含01,長度不超過1000000。output 一行乙個整數,最長的0與1的個數相等的子串的長度。input示例 ou... 題目 給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。輸入 乙個字串,只包含01,長度不超過1000000。輸出 一行乙個整數,最長的0與1的個數相等的子串的長度。樣例輸入 1011樣例輸出 2分析 使用字首和,字首和pre i val表示01字串前i個字元中,1的數量 0的...51Nod 1393 0和1相等串
51nod 1393 0和1相等串
51Nod 1393 0和1相等串