zoukankan      html  css  js  c++  java
  • 后缀子串排序

    前言:

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

    题目描述

    对于一个字符串,将其后缀子串进行排序,例如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 }
  • 相关阅读:
    WEBUS2.0 In Action
    WEBUS2.0 In Action
    WEBUS2.0 In Action
    WEBUS2.0 In Action
    在Linux查看版本命令
    Increasing heap size while building the android source code on Ubuntu 15.10
    在Linux中增加swap空间
    Patch
    使用Vim比较两个文件的内容
    @override 重写 与重载
  • 原文地址:https://www.cnblogs.com/ygh1229/p/5804026.html
Copyright © 2011-2022 走看看