对于给定的一个包含连续字母、连续数字及空格的字符串(不会出现字母和数字连在一起出现),实现字母部分按出现顺序排列而数字按照从小到达顺序排在最后一个字母的后面。
数据范围: 字符串长度满足 
进阶:空间复杂度
, 时间复杂度 )
进阶:空间复杂度
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param text_source string字符串 原始输入 * @return string字符串 */ public static String char_and_num_return (String text_source) { if (text_source.equals("")) { return ""; } String[] str = text_source.split(" "); StringBuilder sb = new StringBuilder(); PriorityQueue<Long> queue = new PriorityQueue<>(); for (int i = 0; i < str.length; i++) { if (str[i].charAt(0) > 89) { sb.append(str[i]).append(" "); } else { queue.add(Long.parseLong(str[i])); } } while (!queue.isEmpty()) { sb.append(queue.peek()).append(" "); queue.poll(); } text_source = sb.substring(0, sb.length() - 1); return text_source; } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param text_source string字符串 原始输入 * @return string字符串 */ public String char_and_num_return (String text_source) { //先把String转成String数组 String[] s = text_source.split(" "); Arrays.sort(s, (a, b) -> { if(isString(a) && isString(b)) { return 0; } else if(isString(a) && !isString(b)) { return -1; } else if(!isString(a) && isString(b)) { return 1; } else { return (int)(Long.valueOf(a) - Long.valueOf(b)); } }); StringBuilder res = new StringBuilder(); for(String item : s) { res.append(item).append(" "); } return res.toString().trim(); } boolean isString(String c) { return c.charAt(0) > 57; } }