2017-02-24 44 views
0

我有一個映射表,M實際上改變:驗證變換的串(根據映射表)

mapping table

並使用此,我已經進行了查找&替換字符串S這給了我經變換的串S'

S: {"z" "y" "g" "k"} -> S':{"z" "y" "h" "k"}

現在我想驗證,如果我的映射transfor mation實際上應用於S'。我想出了這樣做的psudo代碼如下:

I. Call function searchCol(x, 「h」); // returns true if 「h」 can be found in column x in M. 

II. If searchCol(x, 「h」); returns true { 
    // assume mapping transformation was not applied to S' 
    // S'' after transforming S': {「z」, 「y」, 「i」, 「j」} 
} 

III.If searchCol(x, 「h」); returns false { 
    // assume mapping transformation was already applied to S' 
    // do nothing 
} 

IV. // log and continue … 

然而,正如你所看到的,對於上述算法的情況下無法正常工作。有沒有人知道更好的方法去做這件事?

歡呼聲,爲您提供幫助。

注意:由於我的代碼庫是在Java中,如果你提供任何代碼示例,我更喜歡它,如果你使用相同的語言發佈他們:)

+0

之前有人說這個,不,這不是一項功課。我只是試圖在我的工具之上構建這個工具來自動檢查它所做的更改。 –

回答

1

你能代替跟蹤轉換的?有些情況下,這是不可能的,以確定是否轉變發生了,想象這映射表:

x -> y 
y -> x 

現在給出字符串yxyxyxyx,在它已經改變?多少次?

但是,即使你的映射表是免費的圈子,你唯一能說的就是:

If the string contains a char that is on the left side and not on the right side, 
then it was not yet transformed. 

但如果不滿足上述條件,那麼你就不能確定任何事情。

+0

是的,當我提出這個問題時,我正在考慮的就是這一點,但保持跟蹤不會發生在我身上。那麼如何完成這個跟蹤呢?我是否需要向日志中添加一些元數據,或許說明了所做的確切轉換?所以日誌會顯示:'x-> y'&'y-> x'。然後檢查,第一個例子是反轉地圖'y',第二個例子是反向地圖'x'。或者,還有更好的方法? –

+1

如果你是一個正在進行轉換的人,你可以用一個轉換計數器將每個字符串包裝在一個對象中。每當你變換,你增加它。 – fafl

+0

謝謝你的提示,是的,我正在做整件事情。 –