51nod 1393 0和1相等串

2021-08-27 03:53:20 字數 756 閱讀 9497

基準時間限制:1 秒 空間限制:131072 kb 分值: 20 難度:3級演算法題

給定乙個0-1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。

input

乙個字串,只包含01,長度不超過1000000。

output

一行乙個整數,最長的0與1的個數相等的子串的長度。

input示例

output示例

思路:01相等的子串會出現在前端、中端、或後端,這裡中端和後端是一種情況。這裡用了字首和的思想。sum記錄0、1個數的差值,符合題意的一定sum=0。如果出現在前端,那麼從i=0遍歷到sum=0,就是結果。如果出現在中端或後端,相等子串的開頭前面那個位置和結尾的那個位置的sum一定是一樣的,我們用map[sum]記錄第一次出現的sum的下標,當sum相同時即出現了相同子串,更新最大長度。

#include#include#include#includeusing namespace std;

char str[1000005];

mapm;

int main()

else//出現相同的sum,中間一定為相等子串,取最大值

maxn=max(maxn,i-m[sum]);

} printf("%d\n",maxn);

return 0;

}

51Nod 1393 0和1相等串

1393 0和1相等串 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。input 乙個字串,只包含01,長度不超過1000000。output 一行乙個整數,最長的0與1的個數相等的子串的長...

51nod 1393 0和1相等串

給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。input 乙個字串,只包含01,長度不超過1000000。output 一行乙個整數,最長的0與1的個數相等的子串的長度。input示例 1011output示例 2 準備乙個sum,如果碰到0則 1,碰到1則 1.對於每乙個...

51Nod 1393 0和1相等串

題目 給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。輸入 乙個字串,只包含01,長度不超過1000000。輸出 一行乙個整數,最長的0與1的個數相等的子串的長度。樣例輸入 1011樣例輸出 2分析 使用字首和,字首和pre i val表示01字串前i個字元中,1的數量 0的...