题目1135:字符串排序 Java/c++

来源:互联网 发布:双色球扫描查询软件 编辑:程序博客网 时间:2024/06/03 14:26
题目描述:

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

输入:

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

输出:

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

样例输入:
5sky is greycoldvery coldstop3it is good enough to be proud ofgoodit is quite good
样例输出:
coldvery coldsky is greygoodit is quite goodit is good enough to be proud of
提示:

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



c++代码:

#include <iostream>#include <string>#include <vector>#include <algorithm> using namespace std; bool cmp(string x,string y){    return x.length()<y.length();} int main(){    string str;    int i,j,k;    int n;    while(cin>>n&&n)    {        cin.ignore();        vector<string>vecstr;        for(i=0;i<n;i++)        {            getline(cin,str);            if (str=="stop")            {                break;            }            vecstr.push_back(str);        }        sort(vecstr.begin(),vecstr.end(),cmp);        /*        for (vector<string>::iterator i=vecstr.begin();i!=vecstr.end();i++)        {            cout<<*i<<endl;        }        */        for (i=0;i<vecstr.size();i++)        {            cout<<vecstr[i]<<endl;        }    }//while    return 1;}/**************************************************************    Problem: 1135    User: Carvin    Language: C++    Result: Accepted    Time:10 ms    Memory:1528 kb****************************************************************/

Java代码:

import java.util.Scanner;import java.*;  public class Main{    public static void main(String args[]){        String str[]=new String[100];        String tempstr ="";        String str1;        int i,j,k;        Scanner cin=new Scanner(System.in);        while(cin.hasNext()){            int num=cin.nextInt();            int count=0;            for(i=0;i<=num;i++){                str1=cin.nextLine();                if(!str1.equals("stop")){                    str[i]=str1;                    count++;                }                else {                    break;                }                                 }//for            for(i=0;i<count;i++){                for(j=0;j<i;j++){                    if(str[j].length()<str[i].length()){                        tempstr=str[j];str[j]=str[i];str[i]=tempstr;                    }                }            }            //Arrays.sort(str);            //System.out.pri5ntln(Arrays.toString(str));            for(i=count-2;i>=0;i--){                System.out.println(str[i]);            }//for        }//while    }//main}//Main/**************************************************************    Problem: 1135    User: Carvin    Language: Java    Result: Accepted    Time:90 ms    Memory:15772 kb****************************************************************/



1 1
原创粉丝点击