问题来源:leetcode
问题描述:
Given an input string, reverse the string word by word.
想法就是用split函数,但是你会发现数组是没有倒转函数的,要么用循环倒转。要么转化成list调用Collections.reverse
这个时候又会遇到一个问题,reverse之后的数字时object的类型的要强制转换成string类型
代码:我
1 //方法1 手动倒转 2 s=s.trim(); 3 String[] str=s.split("\s+"); 4 String[] rstr=new String[str.length]; 5 for(int i=0,j=str.length-1;j>=0;++i,--j) 6 { 7 rstr[i]=str[j]; 8 } 9 s=String.join(" ",rstr); 10 return s; 11 //方法2 函数倒转 12 s=s.trim(); 13 String[] str=s.split("\s+"); 14 List<String> strs=new ArrayList<String>(Arrays.asList(str)); 15 Collections.reverse(strs); 16 str=new String[strs.size()]; 17 strs.toArray(str); 18 s=String.join(" ",str);
leetcode优秀解法将上面object数组的转化直接放到join函数里
1 public String reverseWords(String s) { 2 String[] words = s.trim().split(" +"); 3 Collections.reverse(Arrays.asList(words)); 4 return String.join(" ", words); 5 }