字串編輯

2021-07-30 14:31:28 字數 1703 閱讀 5007

字串編輯

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. banbab 2. bababe 3. anaany 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...