leetcode

旋转字符串:
Reverse Words in a String:
算法: 先是整体旋转,啊然后是旋转个体。 “the sky is blue”,
“blue is sky the”.
细节部分
1. 对于空格怎么处理,然后就是 像这样的字符串处理“1 ”;
用一个Count计数,当count >= 1 , 判断后面是否有汉子,有的 + ‘ ’;
否则直接退出

代码:

class Solution {
public:
    void reverseWords(string &s) {
         int n = s.size();
       if(n == 0)
       {
           s = "";
           return;
       }
       int i=0,j=n-1;
        while(i  < j)
        {
            char temp = s[i];
            s[i] = s[j];
            s[j] = temp;
            i++;
            j--;
        }
        i=0,j=0;
        int l=0,Count=0; //Count 计算后面是否需要加“ ”;
        while(i < n)
        {
            while(i < n && s[i] == ' ')
            {
                i++;
            }
            if(i == n) //判断后面是有单词
            {
                break;
            }

            if(Count)
            {
                s[j] = ' '; //前面有的话, 就+‘ ’;
                j++;
            }
             l = j;
            while(i < n && s[i] != ' ')
            {
                s[j] = s[i];
                i++;
                j++;
            }
            int d1 = l, d2 = j-1;
            while(d1 < d2)
            {
                char temp = s[d1];
                s[d1] = s[d2];
                s[d2] = temp;
                d1++;
                d2--;
            }
            Count++;
        }

        s.resize(j);
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值