import java.util.*; public class Solution { //step1:先将字符串的大小写转换 //step2:将字符串以空格为界,分割单词 //step3:将单词入栈,注意需要判断原字符串最后一位是不是空格的情况,如果是需要在结果字符串开头加上空格 //这里的多加个判断,可以保证字符串最后不会被多添加一个空格 //while(!stack.isEmpty()){ //res.append(stack.pop()); //if(!stack.isEmpty()){ //res.append(" "); //} //} public String trans (String s, int n) { if(n == 0){ return s; } // write code here // 把字符串中由空格隔开的单词反序,同时反转每个字符的大小写 // 应该带着空格一起放入栈中 // a 97, A 65, z 122, Z 90 StringBuilder res = new StringBuilder(lowerAndUpper(s)); Stack<String> stack = new Stack<>(); for(int i = 0; i < n; i++){ // 以空格为界,分割单词 int j = i; while(j < n && res.charAt(j) != ' '){ j++; } stack.push((String)(res.substring(i, j))); i = j; } if(s.charAt(s.length() - 1) == ' '){ res = new StringBuilder(" "); }else{ res = new StringBuilder(); } while(!stack.isEmpty()){ res.append(stack.pop()); if(!stack.isEmpty()){ res.append(" "); } } return res.toString(); } public String lowerAndUpper(String s){ char[] cs = s.toCharArray(); StringBuilder res = new StringBuilder(); for(char c : cs){ if(c >= 65 && c <= 90){ c = (char) (c + 32); }else if(c >= 97 && c <= 122){ c = (char) (c - 32); } res.append(c); } return res.toString(); } }