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(" ");
}
}