對字符串s2進行排序我有兩個字符串s1和s2,並且我想根據s1中字母的出現順序對s2進行排序,並且如果其他字母留在s2按字母順序排序。使用字符串s1的順序使用可比較的或比較器接口
假設我有以下;
String s1 =「war」;
String s2 =「它真棒程序員」;
輸出:waaarrrIbeeeeggimmmnoopsst。
我已經寫了一個代碼來做到這一點,雖然笨蛋,我想知道如果它可能使用比較/可比接口來解決它。
下面列出的是我的代碼片段。
public class Sort {
private static String a = "war";
private static String b = "Its awesome being a programmer";
static List<Character> list = new ArrayList<>();
static public void main(String[] args) {
Character s;
Character x;
System.out.println("String to be sorted: '" + b + "'");
System.out.println("Key for sort: '" + a + "'");
/*
* put all the string in a list
*/
for (int i = 0; i < b.length(); i++) {
s = b.charAt(i);
if (s != ' ') {
list.add(s);
}
}
/*
* compare individual chac in key with individaul char in string to sort
*/
StringBuilder sb = new StringBuilder();
for (int j = 0; j < a.length(); j++) {
x = a.charAt(j);
for (int k = 0; k < b.length(); k++) {
s = b.charAt(k);
if (x == s) {
sb.append(s);
list.remove(x);
}
}
}
/*
* check if list is empty if not, sort and append the rest to the stringbuilder
*/
if (!list.isEmpty()) {
Collections.sort(list);
for (char c : list) {
sb.append(c);
}
}
System.out.println("Sorted version of string: '" + sb.toString() + "'");
}
}
它似乎沒有給出所需的輸出 – Ayodeji 2013-03-25 15:45:05
抱歉有什麼問題,當我運行它時,我得到[w,a,a,a,r,r,r,i,b,e,e,e ,e,g,g,i,m,m,m,n,o,o,p,s,s,t],這與你的上述結果相符 – BenG 2013-03-25 15:54:14
這是我得到的結果[a,w, a,r,r,a,r,I,b,e,e,e,e,g,g,i,m,m,m,n,o,o,p,s,s,t] – Ayodeji 2013-03-25 16:12:55