字串迴圈移位的幾種解

2021-09-12 01:54:16 字數 520 閱讀 3104

字串長度為n,輸出迴圈向左移動i位之後的字串(i例:abcdefg 迴圈向左移動3位之後變為 defgabc

模擬迴圈移動,比較耗時

在足夠記憶體的情況下,先將前 i 位字串儲存在乙個臨時記憶體中,然後將後面的 (n-i)位向左移動到 i 位,然後將之前儲存的 i 位字串放到移動之後的 (n-i)位字串後面

記憶體不夠或者限制記憶體使用時,假設字串s,先儲存s[0],然後將s[i]複製到s[0],將s[2*i]複製到s[i],以此類推,直到 r*i >= n,無法再移動,然後將s[0]複製到s[(r-1)*i]。之後開始儲存s[1],按上述方法將s[1]複製到s[(r-1)*i+1],... ,最後將s[i-1]移到最末尾,結束。

將字串分為兩部分 ab,目標是將ab轉變成ba,可以先將a和b分別倒置,定義r(a)為a的倒置串,r(b)為b的倒置串,那麼r(r(a)r(b)) = ba,也就是我們想要的結果。

字串迴圈移位

把字串移動n位。可以乙個乙個移動,這樣的話,要移動n次,每次移動len個。演算法時間複雜度為o n len 也可以開闢乙個新的記憶體,把移動的最終位置計算出來,直接放到那裡即可,這樣時間負責度為o 1 空間複雜度為o len 除此之外,還有時間負責度為o 1 空間負責度也為o 1 的演算法。第一種方...

字串迴圈移位

首先,先看看如何對數字進行迴圈移位 c語言中沒有提供迴圈移位的操作符,但可以通過簡潔的方式實現迴圈移位,主要使用移位操作來實現。設乙個運算元x有s位則迴圈左移n位的操作為 x n x s n 同理右移n位位 x n x s n 實際程式設計中可以用巨集定義實現迴圈移位 define rotate l...

字串迴圈移位

問題描述 給定乙個字串,把字串前k個字元移動到尾部。例 字串 abcdefg 左移3為變成 defgabc 解決思路 引入矩陣中 a b ba的思想 a 為a的轉置矩陣 比如 abc cba,defg gfed,cbagfed defgabc。這樣的演算法時間複雜度是o n 空間複雜度是o 1 如下...