题目描述:
I love you 转化成 you love I
思路如下:
1.整体逆置
2.每个单词逆置
代码如下
#include <stdio.h>
#include <string.h>
static void swap(char *a,char *b)
{
char temp = *a;
*a = *b;
*b = temp;
}
void reverse(char *s,int left,int right)
{
while(left < right)
{
swap(&s[left],&s[right]);
left ++;
right --;
}
}
void test(char *s)
{
int left = 0;
int right = 0;
int len = strlen(s);
reverse(s,0,len-1);
//printf("%s",s);
bool inWord = false;
for (int i=0;i< len+1 ;i++)
{
if(inWord == false)
{
if(s[i]>='a' && s[i]<='z' || s[i]>='A' && s[i]<='Z' )
{
inWord = true;
left = i;
}
}
if (inWord == true)
{
if(s[i]==' ' || s[i] == '\0')
{
inWord = false;
right = i-1;
reverse(s,left,right);
}
}
}
printf("%s\n",s);
}
int main()
{
char str[100] = "I love you";
test(str);
}