字串編輯
time limit:10000ms memory limit:65536k
total submit:19 accepted:15
case time limit:1000ms
description
為了對一些資料進行保密,奶牛們要對某些文章進行編輯。編輯的方法很奇特:要把原有文章的某些詞句按照某些規則用另一些詞句代替。
規則的形式如下:原串新串,表示把原串替換成新串。假設有n條規則,第i規則的原串和新串分別為mi和ni,則編輯按如下過程進行:開始編輯時,先使用第一條規則,把文章中出現的第乙個m1替換成n1,如果替換後的新文章還存在m1,則如上處理,直到文章不存在m1為止;然後用同樣的方法使用第2,第3,……,第n條規則進行替換,直到所有的規則都用完為止。注意:
每次都要從文章開頭開始找要替換的詞句
一條規則一旦使用完後,將不能再使用
每一篇文章都是可編輯的
如有四條規則:1. banbab 2. bababe 3. anaany 4. ba b hind the g 要編輯的文章為「banana boat」,則編輯的過程如下:
input
資料存放在當前目錄下的文字檔案「editing.in」中。
檔案共有2n+2行。檔案的第一行是乙個整數n(1<=n<=10),表示規則的數目;接下來第2i行及第2i+1行分別表示mi和ni(1<=i<=n),其長度均不超過80個字元,且mi不為空串;最後一行是要編輯的文章,長度不超過80個字元。行末沒有空格。
output
sample input
4 ban
bab
baba
be ana
any
ba b
hind the g
banana boat
1 t
sh toe or top
做法:模擬
**如下:
var
s:string;
o,n:array[1..30] of
string;
m,i,j:longint;
procedure
init;
var i:longint;
begin
readln(m);
for i:=1
to m do
begin
readln(o[i]);
readln(n[i]);
end;
readln(s);
end;
begin
//assign(input,'editing.in');reset(input);
//assign(output,'editing.out');rewrite(output);
init;
for i:=1
to m do
begin
j:=pos(o[i],s);
while j<>0
dobegin
delete(s,j,length(o[i]));
insert(n[i],s,j);
j:=pos(o[i],s);
end;
end;
writeln(s);
close(input); close(output);
end.
編輯字串距離
題目 題意 編輯距離,又稱levenshtein距離 也叫做edit distance 是指兩個字串之間,由乙個轉成另 乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪 除乙個字元。例如將kitten轉化成sitting sitten k s sittin ...
字串編輯距離
題目描述 給定乙個源串和目標串,能夠對源串進行如下操作 在給定位置上插入乙個字元 替換任意字元 刪除任意字元 寫乙個程式,返回最小運算元,使得對源串進行這些操作後等於目標串,源串和目標串的長度都小於2000。關於字串最短編輯距離的解題思路 給定相關資料的定義 mep i j 表示源字串source ...
字串編輯距離
給出兩個單詞word1和word2,寫乙個函式計算出將word1 轉換為word2的最少操作次數。你總共三種操作方法 1 插入乙個字元 2 刪除乙個字元 3 替換乙個字元 格式 輸入行輸入兩個字串 word1 和 word2,最後輸出將 word1 轉換為 word2的最少操作次數 樣例輸入 wor...