反转字符串&&反转字符串中单词的序列

反转字符串

题目描述

在这里插入图片描述

解题思路:
思路一:直接利用reverse方法逆置数组就可以了
class Solution 
{
public:
    void reverseString(vector<char>& s) 
    {
        reverse(s.begin(),s.end());
    }
};
思路二:利用交换的思路
class Solution {
public:
    void reverseString(vector<char>& s) 
    {   
        int left=0;
        int right=s.size()-1;
        while(left<=right)
        {
            char temp=s[left];
            s[left]=s[right];
            s[right]=temp;
            left++;
            right--;
        }
    }
};
思路三:同样的交换思路:
class Solution {
public:
    void reverseString(vector<char>& s) 
    {
        int n=s.size();
        for(int i=0;i<n/2;i++)
        {
            int j=n-i-1;
            char temp=s[i];
            s[i]=s[j];
            s[j]=temp;
        }
    }
};

反转字符串中单词的序列

题目描述:

在这里插入图片描述

解题思路:
nowcode
class Solution {
public:
    string ReverseSentence(string str) {
        int len = str.length();
        if(len == 0) 
            return "";
        int begin=0;
        int end=0;
        Reverse(str,0,len-1);
        begin=end=0;
        while(str[begin]!='\0')
        {
            if(str[begin]==' ')
            {
                begin++;
                end++;
            }
            else if(str[end]==' '||str[end]=='\0')
            {
                Reverse(str,begin,--end);
                begin=++end;
            }
            else 
                end++;
        }
        return str;
    }
    void Reverse(string &str,int begin,int end)
    {
        while(begin < end)
        {
            swap(str[begin++],str[end--]);
        }
    }
};
测试用例
  • 功能测试:句子中有多个单词,句子中只有一个单词
  • 特殊输入测试:字符指针为空指针,字符串的内容为空,字符串中只有空格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值