514 自由之路

2022-05-08 21:42:11 字數 962 閱讀 6601

最初,ring 的第乙個字元與12:00方向對齊。您需要順時針或逆時針旋轉 ring 以使 key 的乙個字元在 12:00 方向對齊,然後按下中心按鈕,以此逐個拼寫完 key 中的所有字元。

旋轉 ring 拼出 key 字元 key[i] 的階段中:

您可以將 ring 順時針或逆時針旋轉乙個位置,計為1步。旋轉的最終目的是將字串 ring 的乙個字元與 12:00 方向對齊,並且這個字元必須等於字元 key[i] 。

如果字元 key[i] 已經對齊到12:00方向,您需要按下中心按鈕進行拼寫,這也將算作 1 步。按完之後,您可以開始拼寫 key 的下乙個字元(下一階段), 直至完成所有拼寫。

示例:ring 和 key 的字串長度取值範圍均為 1 至 100;

兩個字串中都只有小寫字元,並且均可能存在重複字元;

字串 key 一定可以由字串 ring 旋轉拼出。

記憶化搜尋(dfs)

class

solution

};unordered_map

int,int>,int,myhash>dic;

//dic=x 從ring的i處開始找到所有key從j開始的關鍵字,需要最少步數x

int findrotatesteps(string ring, string

key)

return dfs(0,0,mp)+key.size();

}int dfs(int curringindex,int nexkeyindex,unordered_map>&mp)

if(dic.count())];

}char nexkeychar=key[nexkeyindex];

int minres=int32_max;

for(int

pos:mp[nexkeychar])

dic=minres;

//coutminres;

}};

514 自由之路

最初,ring 的第乙個字元與12 00方向對齊。您需要順時針或逆時針旋轉 ring 以使 key 的乙個字元在 12 00 方向對齊,然後按下中心按鈕,以此逐個拼寫完 key 中的所有字元。旋轉 ring 拼出 key 字元 key i 的階段中 您可以將 ring 順時針或逆時針旋轉乙個位置,計...

leetCode 514 自由之路

題目 狀態設定 dp i pos 在第i輪,將字元ring pos 移動到12點位置,拼寫key 0 i 所需要的最小步數 狀態計算 dp i pos min dp i pos dp i 1 prepos min abs prepos pos m abs prepos pos for prepos ...

leetcode514 自由之路

最初,ring 的第乙個字元與12 00方向對齊。您需要順時針或逆時針旋轉 ring 以使 key 的乙個字元在 12 00 方向對齊,然後按下中心按鈕,以此逐個拼寫完 key 中的所有字元。旋轉 ring 拼出 key 字元 key i 的階段中 您可以將 ring 順時針或逆時針旋轉乙個位置,計...