题解 | #第K小子串#

第K小子串

http://www.nowcoder.com/questionTerminal/c59d9690061e448fb8ec7d744c20ebff

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了。

全部评论

相关推荐

门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务