后缀子串排序

前言:

    子串按照字母先后顺序排序,像字典那样,这里我采用简单选择排序的方式进行排序并输出。

题目描述

对于一个字符串,将其后缀子串进行排序,例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,即: ain,grain,in,n,rain 
输入描述:
每个案例为一行字符串。


输出描述:
将子串排序输出

输入例子:
grain

输出例子:
ain
grain
in
n
rain

 1 import java.util.Scanner;
 2 /**
 3  * 子串像字典那样排序
 4  * @author ygh
 5  *
 6  */
 7 public class 后缀子串排序 {
 8 
 9     public static void main(String[] args) {
10         Scanner in = new Scanner(System.in);
11         while (in.hasNext()) {
12             String str = in.nextLine();
13             String[] ch = new String[str.length()];
14             for (int i = 0; i < str.length(); i++) {
15                 ch[i] = str.substring(i);
16             }
17             String temp;
18             int flag = 0;
19             for (int i = 0; i < ch.length; i++) {
20                 for (int j = i + 1; j < ch.length; j++) {  //双重循环  简单选择排序
21                     //获取两个子串的相同位置的字符,while它们相等时进行如下操作
22                     while (ch[i].toLowerCase().charAt(flag) == ch[j].toLowerCase().charAt(flag)) {
23                         //当遍历到某个元素的末尾时,子串长度小的放在前面
24                         if (flag == ch[i].length()-1 || flag == ch[j].length()-1){
25                             if(ch[i].length()>ch[j].length()){
26                                 temp = ch[i];
27                                 ch[i] = ch[j];
28                                 ch[j] = temp;
29                             }
30                             break;
31                         }
32                             flag++;  //往后继续遍历
33                     }
34                     //if数组里存放的前面元素比后面元素大的时候  则调换位置
35                     if (ch[i].toLowerCase().charAt(flag) > ch[j].toLowerCase().charAt(flag)) {
36                         temp = ch[i];
37                         ch[i] = ch[j];
38                         ch[j] = temp;
39                     }
40                     flag=0;
41                 }
42 
43             }
44             //打印
45             for(int a=0;a<ch.length;a++){
46                 System.out.println(ch[a]);
47             }
48         }
49         in.close();
50 
51     }
52 
53 }

 

posted @ 2016-08-24 17:49  华不摇曳  阅读(722)  评论(0编辑  收藏  举报