力扣:反转字符串的单词III (C语言)

题目描述:

给定一个字符串 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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值