字串移位

2021-06-26 06:03:34 字數 665 閱讀 3034

把乙個字串左選擇操作:吧字串前面的的若干字元移動到字串的尾部,如吧字串的abcdef左旋轉2位得到字串cdefab。

思路1.暴力移位發

把移動m部拆分成移動一步。

void leftshiftone(char* s,int n)

s[n-1]=t; }

移動m位,如下

void leftshift(char* s,int n,int m)

} 2.指標翻轉法

abc def ghi->def abc ghi->def ghi abc

定義兩個指標,p1指向ch[0],p2指向ch[m];

一下過程迴圈m次,交換p1和p2所指的元素,然後p1++,p2++;

1.第一步,交換abc和def,abc defghi->def abc ghi

2.第二步,交換abc和ghi,def abcghi->def ghiabc

程式設計,先迴圈m次,交換abc,def,之後判斷p2+m-1.

#include

void rotate(string &str,int m)

int r=n-p2;

while(r--)

p2++;

p1++; }

思路3,遞迴轉換

}

字串迴圈移位

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

字串移位包含

給定兩個字串s1和s2 要求判定s2是否能夠被通過s1作迴圈移位 得到的字串包含 假設給定s1 aabcd s2 cdaa 返回true 給定s1 abcd s2 acbd false 方法1 窮舉法 將長度為n的s1移動n次 每次移動1為 檢視是否包含s2 方法2 將長度為n的s1移動n次 保留每...

字串迴圈移位

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