题解 | #翻转单词序列#
翻转单词序列
https://www.nowcoder.com/practice/3194a4f4cf814f63919d0790578d51f3
方法一:借助栈的先入后出反转字符串(栈+StringBuilder+String[])
public String ReverseSentence(String str) { //if(str==null)//这种字符串判空方式会报错 //if(str.isEmpty())//字符串判空0 //if(str.trim().equals(""))//字符串判空1 if(str.length()<=0)return str;//字符串判空2 String[] sArr = str.trim().split(" ");//分割字符串用数组接收 Deque<String> stk = new LinkedList<>();//用Deque代替Stack for(int i =0;i<sArr.length;i++){ stk.push(sArr[i]); } StringBuilder sb = new StringBuilder(); while(!stk.isEmpty()){//栈的判空 String s = stk.pop(); sb.append(s+" "); } return sb.toString().trim(); }
方法二:无需栈,字符串数组遍历时直接倒序加入StringBuilder
public String ReverseSentence(String str) { //if(str==null)//这种字符串判空方式会报错 //if(str.isEmpty())//字符串判空0 //if(str.trim().equals(""))//字符串判空1 if(str.length()<=0)return str;//字符串判空2 String[] sArr = str.trim().split(" "); StringBuilder sb = new StringBuilder(); for(int i =0;i<sArr.length;i++){ sb.append(sArr[sArr.length-1-i]);//无需栈,直接倒序加入StringBuilder sb.append(" "); } return sb.toString().trim(); }