核心提示:给定一个字符串,你需要颠倒一个句子中每个单词中的字符顺序,同时保留空格和初始单词顺序。我的代码 public static void main(String[] args) {String str =...
给定一个字符串,你需要颠倒一个句子中每个单词中的字符顺序,同时保留空格和初始单词顺序。
我的代码
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(); } }
可以效率高,但代码太冗余了。