题解 | #单词倒排#
单词倒排
http://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) { Scanner in = new Scanner(System.in); String inString = in.nextLine(); //示例String inString = "aade * $afaefeafeafwafaefeafawf* fafaf"; String result = calc(inString); System.out.println(result); } public static String calc(String str){ // 匹配非字母的字符进行分割 String[] words = str.split("[^A-Za-z]"); StringBuilder result = new StringBuilder(); // 逆序添加分割完的单词 for (int i = words.length - 1; i >= 0; i--) { //去除多个连续空格字符串 if("".equals(words[i])){ continue; } //处理二十个字符以上字符串 if(words[i].length()>20){ List<String> list = new ArrayList<>(); int length = 0; int temp = 0; while (length < words[i].length() ){ length = (temp+20) < words[i].length()?temp+20:words[i].length(); list.add(words[i].trim().substring(temp,length)); temp = length; } for(int j=list.size()-1;j>-1;j--){ result.append(list.get(j)).append(" "); } }else{ result.append(words[i].trim()).append(" "); } } return result.toString().trim(); }
}