LeetCode 557. 反转字符串中的单词 III

题目描述

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例 1:

输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc" 

注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

思路

由于字符串中不会有任何额外的空格,根据空格来找单词,将每个单词依次进行字符串的反转即可,字符串的反转可以看我这篇博客:LeetCode反转字符串

AC代码(Java)

class Solution {
    public String reverseWords(String s) {
        char[] cl = s.toCharArray();
        int start = 0;
        int nextSpace = s.indexOf(' ',start);  // 返回字符串s从索引start开始的第一个空格的索引,若没有,则返回-1
        while(nextSpace != -1) {
            reverse(cl,start,nextSpace - 1);
            start = nextSpace + 1;
            nextSpace = s.indexOf(' ',start);
        }
        reverse(cl,start,cl.length - 1);
        return new String(cl);
    }
    
    public void reverse(char[] cl,int start,int end){
        while(start < end){
            char temp = cl[start];
            cl[start] = cl[end];
            cl[end] = temp;
            start ++;
            end --;
        }
    }
}
    原文作者:逍遥ii
    原文地址: https://www.jianshu.com/p/ac8cd2e983be
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞