題目描述 description
某電視台在每乙個星期天都有乙個福利彩票節目,在該節目中有乙個考察幸運觀眾記憶力的節目。節目的安排是這樣的:首先由節目主持人說出一串諸如「左1右2左2左3右4左1」的數值串,然後由幸運觀眾重複該數值串;如果幸運觀眾能全部記憶出節目主持人說的所有數值串,該觀眾將獲得一筆數目可觀的獎金。為了確保節目的質量,節目導演希望這種數值串中不含連續的2個以上相同子串,這樣數值串就不易記憶。他們稱這種有連續相同子串的數值串為「易數值串」,而這種相同子串稱為重複子串;無重複子串的數值串稱為「難數值串」。
例如,下列字串是「易數值串」:
(1)左1左1 (2)左1右2左3右2左3右2(3)左1右2左4左1右2左4右2
而下列字串是「難字串」:
(1)左1(2)左1右2(3)左1右2左1右1(4)左1右2右4左1右2
現假設:
(1)數值前只有「左」和「右」2個方向,分別用l和r代替「左」和「右」。
(2)數字範圍為1,2,3,4,5,6,7,8,9。
(3)所有子串指的是「左」或「右」開始的子串,以諸如「1右2左」的連續重複子串不計算為重複子串。
你的任務是:對於給定乙個數值串(串的長度<=100000),請你程式設計求出第一次出現的最長重複子串。
輸入描述 input description
輸入:輸入檔案為1行,它是一串數值串。
輸出描述 output description
輸出:輸出檔案為1行,它是輸入檔案中數值串的第一次出現的最長重複子串。如果無重複子串則輸出字串「no」。
樣例輸入 sample input
string.in :
l1r2l2l4r5l3l4r5l3r4r5l3r4r5r6l1
樣例輸出 sample output
string.out:
l4r5l3
資料範圍及提示 data size & hint
#include#include#includeusing namespace std;int main()
if (j==i+(l-i)/2) break;
}if (f)
for (int i=begin;ielse cout<<"no";
}
1039 重複子序列問題
pipi有兩個字串a和b,請你求出字串a最少重複幾次才能使得b是a的子串行。我們稱x是y的子串行當且僅當可以從y中刪除若干個字元得到x。例如對於a abb b bbaa 則a重複3次之後得到 abbabbabb 此時b bbaa 是 abbabbabb 的子串行。注意,原始串a即算作重複一次。多組資...
pipioj 1039 重複子序列問題
pipi有兩個字串a和b,請你求出字串a最少重複幾次才能使得b是a的子串行。我們稱x是y的子串行當且僅當可以從y中刪除若干個字元得到x。例如對於a abb b bbaa 則a重複3次之後得到 abbabbabb 此時b bbaa 是 abbabbabb 的子串行。注意,原始串a即算作重複一次。多組資...
1227 重複的子串模式
1227.重複的子串模式 中文english 給你乙個非空字串,判斷它能否通過重複它的某乙個子串若干次 兩次及以上 得到。字串由小寫字母組成,並且它的長度不會超過10000。樣例1 輸入 abab 輸出 true 說明 可以由它的子串 ab 重複兩次得到。樣例2 輸入 aba 輸出 false樣例3...