Reverse Words in a String III--leetcode 有更新!

  |   0 评论   |   352 浏览

题目

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:
Input: “Let’s take LeetCode contest”
Output: “s’teL ekat edoCteeL tsetnoc”

这个比较简单一些,分词然后反序即可以,先贴上自己的实现,再看下更好的方法。

class Solution {
    public String reverseWords(String s) {
        String[] splited = s.split(" ");
        StringBuilder sb = new StringBuilder();
        for (String item : splited) {
            for (int i = item.length(); i > 0; i--) {
                sb.append(item.charAt(i - 1));
            }
            sb.append(" ");
        }
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }
}

贴一个其他的实现,这个大体也只能这样了,稍微调整了下对单个词的反序方式,这里是用的stringBuilder的reverse实现的。还有其他的解决方法,是直接前后换位置来手动实现的倒序。其他也没啥区别了,这个倒是没看到黑科技。

public String reverseWords(String s) {
    String[] str = s.split(" ");
    for (int i = 0; i < str.length; i++) str[i] = new StringBuilder(str[i]).reverse().toString();
    StringBuilder result = new StringBuilder();
    for (String st : str) result.append(st + " ");
    return result.toString().trim();
} 

这里的下一题,继续加在这里吧,比较简单和类似

题目2

Write a function that takes a string as input and returns the string reversed.

public String reverseString(String s) {
	return new StringBuilder(s).reverse().toString();
}

评论

发表评论

validate