题目描述:
给定一个字符串
s
,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
一、解题思路
需要双指针,在下边代码里边我是把k作为正方向,j是反方向
count是每一个单词(默认不是空格的都是字母)的个数,也就是说题目让我们把每个单词翻转,不是整体翻转。
然后数组长度用strlen求。
二、代码
代码如下(示例):
char * reverseWords(char * s){
int i,j;
int sSize=strlen(s);
int count=0;//非空个数
for(i=0;i<=sSize;i++)
{
if(s[i]==' '||s[i]=='\0')
{
int k=i-count;//正着
count=0;//下一个单词的字母个数需要从0开始
for(j=i-1;j>k;j--,k++)//j是反向,去除' '也就是j-1;j与k是相对的,j--向前k++向后;j>k防止重复
{
int temp=s[j];//反转
s[j]=s[k];
s[k]=temp;
}
}
else
{
count++;
}
}
return s;
}