C說話左扭轉字符串與翻轉字符串中單詞次序的辦法。本站提示廣大學習愛好者:(C說話左扭轉字符串與翻轉字符串中單詞次序的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話左扭轉字符串與翻轉字符串中單詞次序的辦法正文
左扭轉字符串
標題:
界說字符串的左扭轉操作:把字符串後面的若干個字符挪動到字符串的尾部。
如把字符串 abcdef 左扭轉 2 位獲得字符串 cdefab。請完成字符串左扭轉的函數。
請求時光對長度為 n 的字符串操作的龐雜度為 O(n),幫助內存為 O(1)。
剖析:
網上看到解法許多種,就不具體解釋了。
我采取的是數組纰謬稱的交流時光龐雜度應當是O(n)。
代碼完成(GCC編譯經由過程):
#include "stdio.h" #include "stdlib.h" void reverse_str(char str[],int n,int m); int main(void) { char str[] = "abcdef"; reverse_str(str,6,2); return 0; } //str為字符串數組,n為數組長度,m為左移位數 void reverse_str(char str[],int n,int m) { int i,j; char tmp; for(i=0,j=n-1;i<j;i++,j--) { tmp = str[i]; str[i] = str[j]; str[j] = tmp; } for(i=0,j=n-m-1;i<j;i++,j--) { tmp = str[i]; str[i] = str[j]; str[j] = tmp; } for(i=n-m,j=n-1;i<j;i++,j--) { tmp = str[i]; str[i] = str[j]; str[j] = tmp; } printf("%s\n",str); }
翻轉句子中單詞次序
翻轉句子中單詞的次序。
標題:
輸出一個英詞句子,翻轉句子中單詞的次序,但單詞內字符的次序不變。
句子中單詞以空格符離隔。為簡略起見,標點符號和通俗字母一樣處置。
例如輸出“I am a student.”,則輸入“student. a am I”。
這個題比擬簡略,直接上代碼了(GCC編譯經由過程)
代碼完成:
#include "stdio.h" #include "stdlib.h" void helper(char a[],int n); int main(void) { char str[15] = "I am a student!"; helper(str,15); printf("\n"); return 0; } void helper(char a[],int n) { int e = n-1; int i,j,t; for(i=e;i>=0;i=j-1) { for(j=i;j>=0 && a[j]!=' ' ;--j); t=j+1; while(t<=i) printf("%c",a[t++]); if(j<0) return; else printf(" "); } }