Trick 1.9 - 字串旋轉

給定一個字串 $$S = s_1s_2\cdots s_n$$,我們定義「$$k$$-旋轉」就是把這個字串的前 $$k$$ 個字元搬到後面去。一個簡單的方式就是把字串拆成兩個子字串然後把它反過來接在一起:

s = s.substr(k) + s.substr(0, k)

如果要做到 in-place,除了仔細計算誰要跟誰交換的方法以外,我們也可以利用翻轉的方式來做到旋轉的功能:

reverse(s, s+k);
reverse(s+k, s+n);
reverse(s, s+n);

results matching ""

    No results matching ""