字符串的链接最长路径查找

题目描述

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

输入描述:

输入第一行为一个正整数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

思路:
1、直接Arrays.sort排序
import java.util.*;
public class Main {
   public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
            int n = sc.nextInt();
            String [] arr = new String[n];
            for(int i=0;i<n;i++){
                String str = sc.next();
                arr[i] = str;
            }
            Arrays.sort(arr);
            for(int i=0;i<arr.length;i++){
                System.out.println(arr[i]);
            }
        }
    }
}

2、map.getOrDefault方法:Map集合中有这个key时,就使用这个key值,如果没有就使用默认值defaultValue

Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value
Map.Entry里面包含getKey()和getValue()方法

Set<Entry<T,V>> entrySet()
该方法返回值就是这个map中各个键值对映射关系的集合。

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Map<String,Integer> map = new TreeMap<String,Integer>();
        int n = scanner.nextInt();
        for(int i = 0;i < n;i ++) {
            String s = scanner.next();
            map.put(s,map.getOrDefault(s, 0) + 1);
        }
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            for(int i = 0;i < entry.getValue();i ++) {
                System.out.println(entry.getKey());
            }
        }
        scanner.close();
    }
}

 

posted @ 2020-08-20 10:56  索爷  阅读(137)  评论(0编辑  收藏  举报