實現字串中單詞的逆轉,即將單詞出現的順序進行逆轉。如將"how are you "逆轉為"you are how!"
阿新 • • 發佈:2019-01-01
1.將字串中單詞逆轉 思路:先將how are you 中的每一個單詞逆序,變成woh era uoy,再把woh era uoy 這個整體字串逆轉,則就達到目的!
#include<stdio.h>
#include<string.h>void Rotate(char *start,char *end) //將一個字串逆轉
{
if(start == NULL || end == NULL) return ;
while(start<end)
{
char temp = *start;
*start = *end;
*end = temp;
--end;++start;
}
}
void RotateString(char *a,int n)
{
int i,j;
char *k =a;
char *s = a;
while(*k != '\0') //在這個while迴圈中將字串變換為woh era uoy,先把how逆序,再把are逆序,再把you逆轉!
{
if(*k == ' ')
{
++k;++s;
continue;
}
else if(*s == ' ' || *s == '\0')
{
Rotate(k,--s); //此處k是一個字串起始的位置,s是到空格位置的下標,s-1是去掉空格,比如說how,k就是0,s就是3,把how逆轉,去掉空格,s-去掉空格。
k = ++s;//此處逆轉完how了,k=3,s=3此時k和s都是空格,再往下遍歷,k=++s,此時K=3,s也等於3,再進行下一個are
}
else
++s;
}
k = a; //把woh era uoy 整體對換,第一個和最後一個對換,把第二個和倒數第二個交換,,,,,,,,直到最後一個。最後的結果為you are how
Rotate(k,s-1); 此處k=0,s=11;
printf("%s\n",a);
}
int main()
{
char a[] ="how are you";
printf("source string: %s\n",a);
RotateString(a,11);
return 0;
}
列印結果: [email protected]:~/zhanghong$ ./a.out
source string: how are you
you are how
[email protected]:~/zhanghong$