后缀子串排序
前言:
子串按照字母先后顺序排序,像字典那样,这里我采用简单选择排序的方式进行排序并输出。
题目描述
对于一个字符串,将其后缀子串进行排序,例如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 }
心有猛虎,细嗅蔷薇 转载请注明:https://www.cnblogs.com/ygh1229/