import java.util.*; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); String input = sc.nextLine(); int k = sc.nextInt(); int n = input.length(); List<String> list = new ArrayList<String>(); Map<String, Integer> map = new HashMap<String, Integer>(); int index = 0; for(int i = 0; i < n; i++){ for(int j = i + 1; j <= n && (j-i)<= k; j++){ if(!map.containsKey(input.substring(i, j))){ map.put(input.substring(i, j), index); list.add(input.substring(i, j)); index++; } } } Collections.sort(list); System.out.println(list.get(k-1)); } }
注意考虑了两点:
1.子字符串添加的时候可能重复,所以使用了一个hashmap来确保无重。
2.第k小子串所以所有参加比较的子串长度不大于k。
完成以上两点后用sort()就ok了。