本来闲得无聊打算收拾收拾出门射箭,突然有个朋友来问了我个问题。于是顺手做了一下。
17.编写一个字符界面的Java Applicantion程序,接受用户输入的字符,以“#”标志输入的结束:比较并输出按字典序最小的字符
这道题最难的地方大概就是理解什么是字典序。
废话不多说,上代码。
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) {
// TODO Auto-generated method stub
String strA = "abcd";
String strB = "njvio";
String strC = "jkdf";
String strD = "pidn";
String strE = "abbc";
String strF = "abcd";
ArrayList<String> arr = new ArrayList<String>();
arr.add(strA);
arr.add(strB);
arr.add(strC);
arr.add(strD);
arr.add(strE);
arr.add(strF);
Solution s = new Solution();
for (String tmp : s.sortStr(arr)) {
System.out.println(tmp);
}
}
public ArrayList<String> sortStr(ArrayList<String> arr) {
for (int i = 0; i < arr.size(); i++) {
for (int j = 0; j < arr.size(); j++) {
if (ALessThanB(arr.get(i), arr.get(j))) {
String tmp = arr.get(i);
arr.set(i, arr.get(j));
arr.set(j, tmp);
}
}
}
return arr;
}
private boolean ALessThanB(String A, String B) {
char[] a = A.toCharArray();
char[] b = B.toCharArray();
char[] shorterChar = a.length < b.length ? a : b;
for (int i = 0, l = shorterChar.length; i < l; i++) {
if (a[i] < b[i]) {
return true;
} else if (a[i] > b[i]) {
return false;
} else {
continue;
}
}
return shorterChar == a;
}
}
//~output:
// abbc
// abcd
// abcd
// jkdf
// njvio
// pidn
没有写输入模块,因为懒。
嗯,就酱。