java 串联所有单词的子串-Substring with Allate of the Words

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 串联所有单词的子串-Substring with Allate of the Words相关的知识,希望对你有一定的参考价值。

public static List<Integer> concatWords(String s,String[] args){
	    if(args==null || args.length==0) return new ArrayList<Integer>();;
	    int item_len = args[0].length();
	    Set<String> set = new HashSet<>();
	    List<String> list = new ArrayList<>();
	    for(String str : args) list.add(str);
	    set.addAll(list);//如果args字符串数组中有重复的字符串则应该用Hashmap来记录各个字符串出现次数而非集合来记录
	    List<Integer> res = new ArrayList<>();
	    for(int i = 0; i <= s.length()-item_len*args.length; ) {
	    	String cur = s.substring(i, i+item_len);
	    	int index = i;
	    	while(set.contains(cur)) {
	    		set.remove(cur);
	    		index += item_len;
	    		if(index+item_len<=s.length())  //注意等号
	    			cur = s.substring(index,index+item_len);
	    	}
	    	if(set.isEmpty()) {
	    		res.add(i);
	    		i += item_len*args.length;
	    	}else if(set.size() < list.size()){
	    		i += (list.size()-set.size())*item_len;
	    	}else i++;
	    	set.addAll(list);
	    }
	    return res;
	}

以上是关于java 串联所有单词的子串-Substring with Allate of the Words的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode-面试算法经典-Java实现030-Substring with Concatenation of All Words(串联全部单词的子串)

[LeetCode] 30. Substring with Concatenation of All Words 串联所有单词的子串

串联所有单词的子串

LeetCode 30 串联所有单词的子串

LeetCode 30 串联所有单词的子串

[LeetCode] 30. Substring with Concatenation of All Words