557. Reverse Words in a String III

本文介绍了一种解决LeetCode上的一道题目——反转字符串中的单词III的方法。该题要求反转句子中每个单词的字符顺序,但保持单词原有的顺序不变。通过使用双指针技巧,有效地实现了字符串的反转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问题描述

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.
Example 1:
Input: “Let’s take LeetCode contest”
Output: “s’teL ekat edoCteeL tsetnoc”
Note: In the string, each word is separated by single space and there will not be any extra space in the string.

来自 https://leetcode.com/problems/reverse-words-in-a-string-iii/description/

2.题目分析

给定一个字符串,反转每个单词中的字符顺序,同时仍然保留空格和单词原来的顺序。简单的方法就是使用left和right,left指向要反转的单词的第一个字母,right指向单词最后一个字母后的空格,然后进行反转,再更新left和right进行下一个单词的反转。

3.C++代码

//我的代码:(beats 98%)
void reverseSubStr(string &s, int l, int r)
{   //反转s[l..r]
    char tmp;
    while (l <r)
    {
        tmp = s[r];
        s[r] = s[l];
        s[l] = tmp;
        l++; r--;
    }
}
string reverseWords(string &s) 
{
    int L = s.length();
    int left = 0;
    int right = 0;
    while (right < L)
    {
        if (s[right] != ' ')
        {
            right++;
            if (right != L)
                continue;
        }
        reverseSubStr(s, left, right-1);
        left = right + 1;
        right ++;
    }
    return s;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值