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

来源:互联网 发布:jdbc数据库配置 编辑:程序博客网 时间:2024/05/29 17:06

我的代码

 public static void main(String[] args) {        String str = "we are family's";        StringBuffer sb = new StringBuffer(str).reverse();        String[] split = sb.toString().split(" ");        sb = new StringBuffer();        for (int i = 0;i<split.length;i++){            sb.append(split[split.length-1-i]).append(" ");        }        System.out.println(sb.toString());    }

别人的代码:
1. 简单解决方案

public class Solution {    public String reverseWords(String s) {        String words[] = s.split(" ");        StringBuilder res=new StringBuilder();        for (String word: words)            res.append(new StringBuffer(word).reverse().toString() + " ");        return res.toString().trim();    }}

原理一样,没什么亮点。

public class Solution {    public String reverseWords(String s) {        String words[] = split(s);        StringBuilder res=new StringBuilder();        for (String word: words)            res.append(reverse(word) + " ");        return res.toString().trim();    }    public String[] split(String s) {        ArrayList < String > words = new ArrayList < > ();        StringBuilder word = new StringBuilder();        for (int i = 0; i < s.length(); i++) {            if (s.charAt(i) == ' ') {                words.add(word.toString());                word = new StringBuilder();            } else                word.append( s.charAt(i));        }        words.add(word.toString());        return words.toArray(new String[words.size()]);    }    public String reverse(String s) {      StringBuilder res=new StringBuilder();        for (int i = 0; i < s.length(); i++)            res.insert(0,s.charAt(i));        return res.toString();    }}

可以效率高,但代码太冗余了。

阅读全文
0 0