篇首语:本文由小常识网(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的主要内容,如果未能解决你的问题,请参考以下文章