問題 A: 左旋轉字串(棧和佇列)
阿新 • • 發佈:2019-01-04
題目:
定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部。
如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。
有多組輸入,串的長度不超過100
輸入
輸入:
abcdef
輸出
輸出:
cdefab
樣例輸入 Copy
unbreakable
樣例輸出 Copy
breakableun
分析:
本題的話是一個簡單的佇列應用,我們可以用陣列模擬。從而得到正確的答案。
#include"stdio.h" #include"string.h" typedef struct { char data[1000]; int front; int rear; }SqQueue; SqQueue Q; void exchange() { int i=1; while(i++<=2) { Q.rear++; Q.data[Q.rear]=Q.data[Q.front++]; } //這一步極其重要因為是多組輸入,所以有可能造成上次的結果殘留。 //所以必須要重新賦值一個結束標誌。 Q.data[Q.rear+1]='\0'; } int main() { int i,n; while(~scanf("%s",Q.data)) { Q.rear=strlen(Q.data)-1; Q.front=0; exchange(Q); printf("%s\n",&Q.data[Q.front]); } }