字符串排序输出

来源:互联网 发布:mac如何写入ntfs 编辑:程序博客网 时间:2024/06/11 11:42
<p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-size: 18px;">已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印。</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-size: 18px;">本例的输出顺序为:dear, dog, eye, bed。</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-size: 18px;">代码中两个compare函数,其中一个为本题要求的场景,另外一个适用于正常情况下任何字母的。但是不知为何,我打印出来的顺序是dog dear eye bed。。。</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-size: 18px;">本题只需要定义一个比较函数再排序即可,也可以用<span style="font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px;">Arrays.sort(inputs, </span><span class="keyword" style="margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); font-weight: bold; font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px;">new</span><span style="margin: 0px; padding: 0px; border: none; font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px;"> Comparator<String>(){  });用一个匿名内部类传递一个比较器进去,最后打印的时候<span style="font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px;"> System.out.println(Arrays.toString(inputs)); </span></span></span></p>
package test.find;import java.util.HashMap;import java.util.Map;public class findString {public static void main(String args[]){String[] s={"bed", "dog", "dear", "eye"};     printString(s);}public static void printString(String[] s){for(int i=1;i<s.length;i++){for(int j=i;j>0;j--){if(compare(s[j-1],s[j])){String temp=s[j];s[j]=s[j-1];s[j-1]=temp;}if(compare(s[j],s[j-1]))break;}}for(String str:s){System.out.println(str);}} /*public static boolean compare(String a,String b){ int len1=a.length(); int len2=b.length(); for(int i=0;i<(len1>len2?len2:len1);i++){ if((a.charAt(i)-b.charAt(i))>0) return true; else if((a.charAt(i)-b.charAt(i))<0) return false; continue; }return false;  }*/public static boolean compare(String a,String b){Map<Character,Integer> map=new  HashMap<Character,Integer>();map.put('d', 1);      map.put('g', 2);      map.put('e', 3);      map.put('c', 4);      map.put('f', 5);      map.put('b', 6);      map.put('o', 7);      map.put('a', 8);    int len1=a.length(); int len2=b.length(); for(int i=0;i<(len1>len2?len2:len1);i++){ if((map.get(a.charAt(i))-map.get(b.charAt(i)))>0) return true; else if(map.get(a.charAt(i))-map.get(b.charAt(i))<0) return false; else  continue; }return true;    }}

0 0