1. 程式人生 > >給定一個字串,你需要顛倒一個句子中每個單詞中的字元順序,同時保留空格和初始單詞順序。

給定一個字串,你需要顛倒一個句子中每個單詞中的字元順序,同時保留空格和初始單詞順序。

我的程式碼

 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(); } }

可以效率高,但程式碼太冗餘了。