HJ 14 字符串排序

描述

给定 n 个字符串,请对 n 个字符串按照字典序排列。

数据范围:  n (1≤n≤1000 ),字符串长度满足 1≤len≤100 

输入描述:

输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。

输出描述:

数据输出n行,输出结果为按照字典序排列的字符串。

示例1

输入:

9
cap
to
cat
card
two
too
up
boat
boot

输出:

boat
boot
cap
card
cat
to
too
two
up

方法一: 使用Arrays.sort()

import java.util.*;
import java.io.*;


public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
           int num = in.nextInt();
          // String 
           String[] dic = new String[num];
            
            for(int i=0; i<num; i++){
                String b = in.next();
                dic[i] = b;
            }
            Arrays.sort(dic);
             for(int j=0; j<num; j++){
                System.out.println(dic[j]);
                // System.out.println(dic.length);
            }
           

        }
    }
}


方法二:使用PriorityQueue

import java.util.*;
import java.io.*;

public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        PriorityQueue<String> myqueue = new PriorityQueue <> ();
        while(in.hasNextInt()){
            int num = in.nextInt();
            for(int i=0; i<num; i++){
                String b = in.next();
                myqueue.offer(b);
            }
  //          System.out.println(myqueue);
//             Iterator<String> it = myqueue.iterator();
//             while(it.hasNext()){
//                 System.out.println(it.next());
//             }
            while(!myqueue.isEmpty())
                System.out.println(myqueue.poll()); //不能用iterator 因为只有队列的头是最小的 使用poll():返回队列的头,并删除

        }
    }
}

优先队列:

按排序顺序进行搜索

优先队列的元素可能没有排序,但元素总是按排序顺序检索的

参考资料:

Java写题解的第二天 | #字符串排序# _牛客博客

Java中Array.sort()的几种用法_eff666的博客-CSDN博客_java中的sort方法

java 中 priorityqueue的使用_liff_lee的博客-CSDN博客_java priorityqueue

Java PriorityQueue - Java教程 - 菜鸟教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值