HJ26题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584?tpId=37&tqId=21249&ru=/exam/oj
1、冒泡排序
2、相邻两个字母的位置用while循环获取:j k
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); System.out.println(sortStr(str)); } private static String sortStr(String str) { char[] chars = str.toCharArray(); int length = chars.length; for (int i = 0; i < length; i++) { int j = 0; while ( j < length - i ) { while (j < length - i && !isChar(chars[j])) { j++; } int k = j + 1; while (k < length - i && !isChar(chars[k])) { k++; } if (k < length - i && compare(chars[j], chars[k])) { char temp = chars[j]; chars[j] = chars[k]; chars[k] = temp; } j = k; } } return String.valueOf(chars); } private static boolean compare(char ch1, char ch2) { int value1 = ch1 >= 'a' && ch1 <= 'z' ? ch1 - 'a' : ch1 - 'A'; int value2 = ch2 >= 'a' && ch2 <= 'z' ? ch2 - 'a' : ch2 - 'A'; return value1 > value2; } private static boolean isChar(char ch) { return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'); } }