左旋字串K個字元

2021-10-25 12:11:41 字數 947 閱讀 3737

實現乙個函式,可以左旋字串中的k個字元。

例如:abcd左旋乙個字元得到bcda

abcd左旋兩個字元得到cdab

思路就是把字串複製一遍,就有兩個一模一樣的連續字串,無論左旋多少個,都屬於複製過後的這個字串裡面的一部分,所以只需要擷取出來就好了。

//實現乙個函式,可以左旋字串中的k個字元。

#include

void

rotateleft

(char

* src,

int n,

int i)

;char s[

256]=;

// 使src在tmp 裡來兩遍

strcpy

(tmp, src)

;//copy函式

strcat

(tmp, src)

;//stract 把乙個加在了前乙個字元的後面

strncpy

(s,tmp+i, n)

;//strncpy(q,p,16)就是c語言中專用的擷取字串函式。

//q是我們把擷取的字串儲存到裡面。

//p是我們即將擷取的字串。

//16是我們從頭開始過後的多少位。

printf

("%s\n"

,s);

}void

main()

這裡我們用到了三個庫函式

strcpy(tmp, src);//copy函式

strcat(tmp, src);//stract 把乙個加在了前乙個字元的後面

strncpy(s,tmp+i, n);

//strncpy(q,p,16)就是c語言中專用的擷取字串函式。

//q是我們把擷取的字串儲存到裡面。

//p是我們即將擷取的字串。

//16是我們從頭開始過後的多少位

左旋字串k個字元

常用方法左旋字串 include include include pragma warning disable 4996 void left move char str,int len,int steps str i 1 tmp int main 為了使程式簡便,將字串進行拷貝並與字串相連線,組成乙...

字串左旋k個字元

解決這個問題,有兩種解題思路,首先來說第一種思路,先定義乙個指標指向字串的首位址,再用tmp 儲存首元素,依次把元素往前移,最後把tmp裡的值放在空出來的位置,迴圈k次就實現了左旋k個字元 第二種思路,把字串分成兩部分,先逆置前一部分,再逆置剩下的部分,最後整體逆置,也可實現左旋k個字元。左旋k個字...

字串 旋轉字串 左旋或右旋k個字元

問題描述 將n個字元的陣列,迴圈右移k位。時間複雜度o n 比如原陣列序列為abcd1234,要求變換成的陣列序列為1234abcd,即迴圈右移了4位。問題分析 方法1 暴力位移法,時間複雜度為o m n 下面是左旋的方法,void leftshift1 char str,size t len,si...