java默认字符串排序规则_Java 字符串排序--------请对一组字符串进行排序,字符串由大小写字母和数字组成,需要满足一下比较规则...
題目描述
請(qǐng)對(duì)一組字符串進(jìn)行排序,字符串由大小寫字母和數(shù)字組成,需要滿足一下比較規(guī)則
長度不同時(shí),長度較短在排前面。
長度相同時(shí),按照字典順序排列(AaBb-Zz,0-9順序),即大寫字母在小寫字母前,數(shù)字排在字母后。
例:
abc Abc 123 1 1bc CBD abcd a
排序后結(jié)果為:
a 1 Abc abc CBD 1bc 123 abcd
代碼如下
public class test{
public static void main(String[] args) {
String str [] = {"abc","Abc","123","1","1cb","CBD","abcd","a"};// 需要排序的字符串
for(int i=0;is2.length()) {
return true;
}else {
if(compare(s1,s2)) { //若字符串長度相同則利用fun函數(shù)進(jìn)行判斷
return true ;
}
}
return false;
}
public static boolean compare(String s1,String s2) {
if(s1.equals(s2)) { //判斷倆個(gè)字符串是否相同
return false ;
}
for(int i=0;i='A'&&s1.charAt(i)<='Z')&&(s2.charAt(i)>='a'&&s2.charAt(i)<='z')) {//s1 大寫 s2小寫
if(s1.charAt(i)>s2.charAt(i)-32) {
return true ;
}else if(s1.charAt(i)==s2.charAt(i)-32) {
return true ;
}else {
return false ;
}
}
if((s1.charAt(i)>='a'&&s1.charAt(i)<='z')&&(s2.charAt(i)>='A'&&s2.charAt(i)<='Z')) {//s1小寫 s2大寫
if(s1.charAt(i)-32>s2.charAt(i)) {
return true ;
}else if(s1.charAt(i)-32==s2.charAt(i)) {
return true ;
}else {
return false ;
}
}
if((s1.charAt(i)>='A'&&s1.charAt(i)<='Z')&&(s2.charAt(i)>='A'&&s2.charAt(i)<='Z')) { //同大寫
if(s1.charAt(i)>s2.charAt(i)) {
return true ;
}else if(s1.charAt(i)==s2.charAt(i)) {
continue;
}else {
return false;
}
}
if((s1.charAt(i)>='a'&&s1.charAt(i)<='z')&&(s2.charAt(i)>='a'&&s2.charAt(i)<='z')) { //同小寫
if(s1.charAt(i)>s2.charAt(i)) {
return true ;
}else if(s1.charAt(i)==s2.charAt(i)) {
continue;
}else {
return false;
}
}
if(s1.charAt(i)
解題思路
思路基本和冒泡排序相同,若前者的字符串長度大于后者,或前者的字典序大于后者則進(jìn)行位置互換。首先利用longs函數(shù)來判斷字符串的長度,若長度相同則利用compare函數(shù)進(jìn)行判斷,首先用equals判斷是否相同,用charAt來讀取單個(gè)字符進(jìn)行比較,當(dāng)s1,s2同為大寫或小寫,s1,s2有一個(gè)大寫有一個(gè)小寫時(shí),情況比較復(fù)雜,用if函數(shù)判斷。
此代碼為小編自己一人所寫,若發(fā)現(xiàn)代碼有誤,請(qǐng)私聊? ? ?勿噴!!!!
總結(jié)
以上是生活随笔為你收集整理的java默认字符串排序规则_Java 字符串排序--------请对一组字符串进行排序,字符串由大小写字母和数字组成,需要满足一下比较规则...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有关睡眠分期规则判读的基础知识整理(基于
- 下一篇: java美元兑换,(Java实现) 美元