首页 > 试题广场 >

字符串排序

[编程题]字符串排序
  • 热度指数:9496 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
先输入你要输入的字符串的个数。然后换行输入该组字符串。每个字符串以回车结束,每个字符串少于一百个字符。 如果在输入过程中输入的一个字符串为“stop”,也结束输入。 然后将这输入的该组字符串按每个字符串的长度,由小到大排序,按排序结果输出字符串。

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


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

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

输入

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
import java.util.Scanner;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
/*
*	注意:
*		只要nextInt,next,nextdouble方法在nextLine前面时,
*		就会跳过nextline的输入nextInt()是以换行符或者回
*		车结束的,表示输入结束。而换行符 ” /n“,回车符 也是
*		一个字符.nextLine()会把前者的换行符或者回车一个字符
*		输入,所以nextLine不是没有录入值,而是直接把换行符或
*		者回车符录入,直接结束输入,所以nextLine不需要再从控制台中录入。
*/
public class Main {
    public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		while(scanner.hasNext()) {
			
			int n = scanner.nextInt();
			scanner.nextLine();	// 消耗掉换行符
			
			//设置一个map用来存储字符串和字符串的长度
			Map<String, Integer> myMap = new TreeMap<String, Integer>();
			
			for (int i = 0; i < n; i++) {
				
				String str = scanner.nextLine();
				if (str.equals("stop")) {
					break;
				}
				int length = str.length();
				myMap.put(str, length);
			}
			
			
			List<Map.Entry<String, Integer>> myList = new ArrayList<>(myMap.entrySet());
			
			myList.sort(Map.Entry.comparingByValue());
			
			Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
			for(Map.Entry<String , Integer> entry : myList) {
				sortedMap.put(entry.getKey(), entry.getValue());
			}
			
			for(Map.Entry<String, Integer> entry: sortedMap.entrySet()) {
				System.out.println(entry.getKey());
			}
			
		}
	}
}

编辑于 2024-03-18 20:28:15 回复(0)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			int n = Integer.parseInt(sc.nextLine());
			List<String> list = new ArrayList<>();
			for(int i=0;i<n;++i) {
				String s = sc.nextLine();
				if(s.equals("stop")) {
					break;
				}else {
					list.add(s);
				}
			}
			Collections.sort(list,new Comparator<String>() {

				@Override
				public int compare(String o1, String o2) {
					return o1.length()-o2.length();
				}
				
			});
			for(String str : list) {
				System.out.println(str);
			}
		}
	}
}

发表于 2023-03-05 16:12:31 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        ArrayList<String> list = new ArrayList<>();
        while(scanner.hasNext()) {
            int len = scanner.nextInt();
            scanner.nextLine();
            for (int i = 0; i < len; i++) {

                String arr = scanner.nextLine();
                if (arr.equals("stop")){
                    break;
                } else {
                    list.add(arr);
                }
            }
//            list.sort(Comparator.comparing(String->String.length()));
//按照字符串长度排序
            list.sort(Comparator.comparing(String::length));
            for (String str : list) {
                System.out.println(str);
            }
//一定要清空
            list.clear();
        }

    }
}

发表于 2021-12-26 23:09:52 回复(0)
Java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.nextLine();
        ArrayList<String> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            String line = scanner.nextLine();
            if (line.equals("stop")) break;
            else list.add(line);
        }
        list.sort(Comparator.comparingInt(String::length));
        for (String s : list) System.out.println(s);
    }
}


发表于 2020-03-20 10:11:54 回复(0)
import java.util.ArrayList;
import java.util.Scanner;
public class StringSort {

    public static void main(String[] args) {
            Scanner in=new Scanner(System.in);
            ArrayList<String> list=new ArrayList<String>();
                
            while(in.hasNext()) {
                  int n=in.nextInt();
                     in.nextLine();
                 for(int i=0;i<n;i++) {
                      String s=in.nextLine();
                      if(s.equals("stop")) break;
                         list.add(s); 
                 }
                 list.sort((o1,o2)->   {        
                 return o1.length()> o2.length() ? 1: (o1.length()==o2.length()?0:-1);    
                 }); 
                   list.forEach(str->{System.out.println(str);});  
              }        
    }
}

发表于 2018-03-26 18:17:10 回复(0)

import java.util.*;


public class test17 {

@SuppressWarnings("resource")

public static void main(String[] args){

Scanner in=new Scanner(System.in);

while(in.hasNext()){

int n=in.nextInt();

in.nextLine();

Map<Integer,String> map=new HashMap<Integer,String>();

for(int i=1;i<=n;i++){

String s=in.nextLine();

//System.out.println(s.hashCode());

if(s.equals("stop"))

break;

else map.put(s.length(),s);

}

List<Map.Entry<Integer, String>> list=

new ArrayList<Map.Entry<Integer,String>>(map.entrySet());

Collections.sort(list,new Comparator<Map.Entry<Integer,String>>(){

public int compare(Map.Entry<Integer,String> o1,

Map.Entry<Integer,String> o2){

return o1.getKey()-o2.getKey();

}

});

for(int i=0;i<list.size();i++){

Map.Entry<Integer, String> ent=list.get(i);

System.out.println(ent.getValue());

}

}

}

}

发表于 2016-08-07 12:45:41 回复(0)

问题信息

难度:
6条回答 17088浏览

热门推荐

通过挑战的用户

查看代码