直接O(n),我理解判断长度就可以,不需要再比较子串了 import java.util.*; public class Main { public static void main(String[] args) { Character[] arr = new Character[]{'a','b','c','d'}; LinkedList<Character> word = new LinkedList<>(Arrays.asList(arr)); String s = "tbcacbdata"; LinkedList<Character> window = new LinkedList<>(); int index =1; for(char c: s.toCharArray()){ // 如果是word中出现的字母 if(word.contains(c)){ // 首先移动windows到重复字母之后 if(window.contains(c)){ while (window.pollFirst() != c); } window.add(c); // 判断是否存在答案 if(window.size()==word.size()){ System.out.println(index-word.size()); return; } } // 不是 word中的字母 else { window.clear(); } index++; } } }

相关推荐

12-24 14:26
东北大学 Java
一只乌鸦:重邮+东北,好经典的学校
最后再改一次简历
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务