首页 > 代码库 > leetcode_557 Reverse Words in a String III(String)

leetcode_557 Reverse Words in a String III(String)

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"
public class Solution {
    public String reverseWords(String s) {
        String[] ans=s.split(" ");
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<ans.length;i++){
            for(int j=ans[i].length()-1;j>=0;j--){
                sb.append(ans[i].charAt(j));   
            }
            sb.append(" ");
        }
        return sb.toString().trim();
    }
}

my solution:把每个单词分割出来,改变顺序,再存入StringBuilder中(占用了多余的空间)

leetcode solution:

public String reverseWords(String s) 
{
    char[] s1 = s.toCharArray();
    int i = 0;
    for(int j = 0; j < s1.length; j++)
    {
        if(s1[j] == ‘ ‘)
        {
            reverse(s1, i, j - 1);
            i = j + 1;
        }
    }
    reverse(s1, i, s1.length - 1);
    return new String(s1);
}

public void reverse(char[] s, int l, int r)
{
    while(l < r)
    {
        char temp = s[l];
        s[l] = s[r];
        s[r] = temp;
        l++; r--;
    }
}

 

leetcode_557 Reverse Words in a String III(String)