LintCode-53.翻转字符串

本文介绍了一种方法来翻转字符串中的每个单词,并确保去除多余的空格。通过使用C++实现了一个具体的示例,该算法首先遍历字符串找到每个单词的开始和结束位置,然后反转并保存这些单词。

翻转字符串

给定一个字符串,逐个翻转字符串中的每个单词。

说明
  • 单词的构成:无空格字母构成一个单词
  • 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括
  • 如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个
标签

字符串处理

code
class Solution {
public:
    /**
     * @param s : A string
     * @return : A string
     */
    string reverseWords(string s) {
        // write your code here
        string word, line;
        int size=s.size();
        int i=size-1, j, begin=size-1, end=size-1;

        if(s.empty())
            return string();

        while(i >= 0) {
            while(s[i]==' ' && i>=0) {
                begin--;
                end--;
                i--;
            }
            while(s[i]!=' ' && i>=0) {
                begin--;
                i--;
            }
            word.resize(0);
            for(j=begin+1; j<=end; j++) 
                word.append(1, s[j]);
            }
            if(begin == 0)
                line = line + word;
            else
                line = line + word + " ";
            end = begin;
        }
        return line;
    }
};

转载于:https://www.cnblogs.com/libaoquan/p/6808050.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值