【九度】题目1099:后缀子串排序

题目地址:http://ac.jobdu.com/problem.php?pid=1099
题目描述:

对于一个字符串,将其后缀子串进行排序,例如grain
其子串有:
grain 
rain 
ain 
in 
n

然后对各子串按字典顺序排序,即: 
ain,grain,in,n,rain

输入:

每个案例为一行字符串。

输出:

将子串排序输出

样例输入:
grain
样例输出:
ain
grain
in
n
rain
来源:
2010年上海交通大学计算机研究生机试真题
如果对字符串操作很熟悉的话,这个题应该不是很难。
考察字符串截取以及字符串排序。
C++ AC
#include <iostream>
#include <stdlib.h>
#include <string>
#include <algorithm>
using namespace std;
int i ;
int main(){     
    string s;
    while(cin>>s){
       int n = s.size();
       string sch[500];
       for(i = 0; i < n; i++){
          sch[i] = s.substr(i,n);
       } 
       sort(sch,sch+n);
       for(i= 0;i < n; i++){
          cout<<sch[i]<<endl;      
       }    
    }
    return 0;
}
/**************************************************************
    Problem: 1099
    User: wangzhenqing
    Language: C++
    Result: Accepted
    Time:10 ms
    Memory:1524 kb
****************************************************************/

Java AC

import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class Main {
    /*
     * 1099
     */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String ab = scanner.next();
            Set<String> set = new TreeSet<String>();
            int length = ab.length();
            for (int i = 0; i < length; i++) {
                set.add(ab.substring(i,length));
            }
            for (String result :set) {
                System.out.println(result);
            }
        }
    }
}
/**************************************************************
    Problem: 1099
    User: wzqwsrf
    Language: Java
    Result: Accepted
    Time:90 ms
    Memory:15524 kb
****************************************************************/

你可能感兴趣的:(【九度】题目1099:后缀子串排序)