62,614
社区成员
发帖
与我相关
我的任务
分享
public class DigitSort {
public static void main(String[] args) {
System.out.println(sortDigits("17fe38D24d6e"));
}
private static String sortDigits(String str) {
// O(n)
int[] count = new int[10];
for(int i=str.length()-1; i>=0; i--) {
char c = str.charAt(i);
if( Character.isDigit(c) )
count[c - '0']++;
}
StringBuilder b = new StringBuilder(str.length());
for(int i=0, j=0; i<str.length(); i++) {
char c = str.charAt(i);
if( Character.isDigit(c) ) {
while( count[j] == 0 )
j++;
c = (char)(j + '0');
count[j]--;
}
b.append(c);
}
return b.toString();
}
}
run:
12fe34D67d8e
BUILD SUCCESSFUL (total time: 0 seconds)
public static void main(String[] args) {
String s = "17fe38D24d6e";
System.out.println(sort(s));
}
private static String sort(String s) {
String str = "";
char[] chars = s.toCharArray();
// 排序数字
for(int i=0;i<chars.length-1;i++){
for(int j=i+1;j<chars.length;j++){
if(Character.isLetter(chars[i]) || Character.isLetter(chars[j])){ // 如果是字母就不比较
continue;
}
if(chars[i]>chars[j]){
char temp = chars[i];
chars[i] = chars[j];
chars[j] = temp;
}
}
}
for(char c:chars){
str+=c;
}
return str;
}
package practice;
import java.util.ArrayList;
import java.util.Collections;
//一个字符串比如:17fe38D24d6e;对数字进行排序而字母位置不变,结果为:12fe34D67d8e
public class SortedTest {
public void sortString(String s) {
String s1 = s;
int n = 0; // 集合的索引
char[] c = s1.toCharArray(); //转为字符数组。
ArrayList<Character> list = new ArrayList<Character>(); // 用来存放数字,
for (int i = 0; i < c.length; i++) {
char ch = c[i];
if (Character.isDigit(ch)) { // 如果为数字,
list.add(ch); // 就把该数字添加到集合里
c[i] = 0; // 并且把此位置的值改为0
}
// System.out.print(ch + " ");
}
Collections.sort(list); // 把集合里面的数字 从小到大排列。
// System.out.println("\n" + list.size());
for (int i = 0; i < c.length; i++) { // 重新遍历字符数组
int ch = c[i];
if (0 == ch) { // 如果此位置为0
c[i] = list.get(n); // 就把此位置的0换成集合第一个数
n++; // 移动集合索引。
}
}
System.out.println(c);
}
public static void main(String[] args) {
String s = "17fe38D24d6e";
new SortedTest().sortString(s);
}
}