C高階 字串左右旋轉

2021-10-23 01:28:22 字數 3314 閱讀 6791

明確"字串左右旋轉"是指什麼?怎樣進行字串的旋轉?

解題思路:

最直接的方法就是依次移位處理

左旋n位:字串的前n位由首部移到尾部,右旋n位:字串的後n位由尾部移到首部。(n < strlen(字串))

字串長度計算:len=strlen(str)

字串左旋

寫乙個函式,可以實現字串左旋k個字元

舉例:

abcd 左旋乙個字元 bcda

abcd 左旋兩個字元 cdab

實現步驟:

1>.先實現乙個函式一次左旋乙個字元

2>.在實現乙個函式一次左旋n個字元

#define _crt_secure_no_warnings

#include

#include

#include

//實現呼叫一次的函式

void

leftrotateone

(char str,

int size)

//1.先把0 號元素的下標進行備份

char tmp = str[0]

;//2.依次將1號元素下標進行左移

for(

int i =

1; i < size; i++

)//3.把剛才備份的元素放到最後乙個元素的位置上

str[size -1]

= tmp;

}//實現呼叫n次的函式

void

leftrotaten

(char str,

int size,

int n)

}//主函式

intmain()

執行結果:

#define _crt_secure_no_warnings

#include

#include

#include

void

leftrotateone

(char str,

int size)

//1.先把0 號元素的下標進行備份

char tmp = str[0]

;//2.依次將1號元素下標進行左移

for(

int i =

1; i < size; i++

)//3.把剛才備份的元素放到最後乙個元素的位置上

str[size -1]

= tmp;

}void

leftrotaten

(char str,

int size,

int n)

}int

main()

執行結果:

字串右旋

實現步驟:

1>.先實現乙個函式一次右旋乙個字元

2>.在實現乙個函式一次右旋n個字元

寫乙個函式,可以實現字串右旋k個字元

#include

#include

#include

void

rightrotateone

(char str,

int size)

//這塊等於是給旋轉的字串首位置先給標記一下,假如沒有標記那麼最後在直接賦值就會導致存在錯誤

char tmp = str[size-1]

;for

(int i = size; i >=

0;i--

) str[0]

= tmp;

}void

rightrotaten

(char str,

int size,

int n)

}int

main()

執行結果:

字串旋轉結果判定

寫乙個函式,判定乙個字串是否為另乙個字串旋轉之後的結果

#include

#include

#include

void

leftrotateone

(char str,

int size)

char tmp = str[0]

;for

(int i =

1; i < size; i++

) str[size -1]

= tmp;

}int

rotatecmp

(char str1,

char str2)

for(

int i =

0; i < len1; i++

)leftrotateone

(str1, len1);}

return0;

}int

main()

結果返回1,表示是左旋之後的結果

執行結果:

#define _crt_secure_no_warnings

#include

#include

#include

void

swap

(char str,

int left,

int right)

void

reverse

(char

* str,

int start,

int end)

}void

exchange

(char

* strchar,

int n)

intmain()

字串左右旋轉問題

首先說明下所謂 字串左右旋轉 是指什麼 如字串 abcdefg 左旋2位,結果應該是 cdefgab 再對 cdefgab 右旋2位,結果應該是 abcdefg 即 左旋n位 字串的前n位由首部移到尾部,右旋n位 字串的後n位由尾部移到首部。n strlen 字串 1 直觀的常規方法 直觀方法就是依...

字串左右旋

點 技巧性問題 題意 如字串1234567890,希望旋轉為5678901234 常見面試題 思路 還是那句話,這類題,絕對是各種技巧去解決,遞迴 迴圈 雙向相遇 快慢指標 各種其他技巧。具體到本題,直接交換的話實現起來甚至還非常麻煩,比如5不能和1交換,因為最後兩個字元90怎麼辦,這種情況程式很難...

演算法練習篇之 左右旋轉字串

組合語言中有一種移位指令叫做迴圈左移 rol 現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s abcxyzdef 要求輸出迴圈左移3位後的結果,即 xyzdefabc 是不是很簡單?ok,搞定它!按照題目意思,相當於將乙...