【九度】题目1135:字符串排序

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

先输入你要输入的字符串的个数。然后换行输入该组字符串。每个字符串以回车结束,每个字符串少于一百个字符。
如果在输入过程中输入的一个字符串为“stop”,也结束输入。
然后将这输入的该组字符串按每个字符串的长度,由小到大排序,按排序结果输出字符串。

输入:

字符串的个数,以及该组字符串。每个字符串以‘\n’结束。如果输入字符串为“stop”,也结束输入.

输出:

可能有多组测试数据,对于每组数据,
将输入的所有字符串按长度由小到大排序输出(如果有“stop”,不输出“stop”)。

样例输入:
5
sky is grey
cold
very cold
stop
3
it is good enough to be proud of
good
it is quite good
样例输出:
cold
very cold
sky is grey
good
it is quite good
it is good enough to be proud of
提示:

根据输入的字符串个数来动态分配存储空间(采用new()函数)。每个字符串会少于100个字符。
测试数据有多组,注意使用while()循环输入。

来源:
2008年北京大学软件所计算机研究生机试真题
输入字符串,按照字符串的长度排序,常规的处理办法。
可以使用sort或者Arrays.sort()。当然也可以自己实现快速排序。
C++ AC
#include <iostream>
#include <string.h>
#include <string>
#include <algorithm>
using namespace std;
int i,n;
 
bool cmp(string s1, string s2){
    return s1.length() < s2.length();
}
int main(){     
    string s;
    while(cin >> n){
        cin.ignore();
        string *array = new string[n];
        for(i = 0 ; i < n; i++){
            getline(cin,s);
            if(s == "stop"){
                break;
            } 
            array[i] = s;
        }
        sort(array, array+i, cmp);
        n = i;
        for(i = 0 ; i < n; i++){
            cout << array[i] << endl;
        }
    }
    return 0;
}
/**************************************************************
    Problem: 1135
    User: wangzhenqing
    Language: C++
    Result: Accepted
    Time:10 ms
    Memory:1528 kb
****************************************************************/

Java AC

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Main {
    /*
     * 1135
     */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int num = Integer.parseInt(scanner.nextLine());
            List<String> arrayList = new ArrayList<String>();
            for (int i = 0; i < num; i++) {
                String a = scanner.nextLine();
                if (a.equals("stop")) {
                    break;
                }
                arrayList.add(a);
            }
            int size = arrayList.size();
            String array[]= new String[size];
            for (int i = 0; i < size; i++) {
                array[i] = arrayList.get(i);
            }
            Arrays.sort(array,new newString());
            for (int i = 0; i < array.length; i++) {
                System.out.println(array[i]);
            }
        }
    }       
}
class newString implements Comparator<String>{
     public int compare(String o1, String o2) {         
        return o1.length() - o2.length();
    }
}
/**************************************************************
    Problem: 1135
    User: wzqwsrf
    Language: Java
    Result: Accepted
    Time:90 ms
    Memory:15728 kb
****************************************************************/

你可能感兴趣的:(【九度】题目1135:字符串排序)