從給定的字符串第一個固定大小的子,我想找到的子串(一些固定大小k)在首先出現在字符串中的相同尺寸的所有子之間lexiographical排序順序。Lexiographically每個滑動窗口位置
我會超過很長的字符串(大小M)滑動窗口做到這一點,並想找到各個滑動窗口子(大小n> k)的位置,當我移動它槽的字符串。
似乎微不足道的解決方案將會利用M * O(N日誌(n))的時間。
我想我可以得到m * O(log(n)),如果我在開始時進行正常排序,然後刪除從最後一個窗口位置開始的子字符串,並插入以子字符串結尾的子字符串每當我移動窗口時,將當前窗口位置的結尾放入已排序的子串集合中。 (當然我不存儲子separetly只是保持自己的位置集合中,所以空間要求是剛剛N-K整數),
對此有更快的算法?
如果我理解正確,您想查找具有較低/較高字典順序的k長字符串。這是如果你有這個字符串「czabyrercdaresfgac」和k = 3你想得到「aby」,是真的?有幾個例子有時可以幫助;) – Ivan
是的。你是對的。並且具有n = 10的滑動窗口。當「aby」變成「are」時,aby會回答到11的位置。 – user1019999