博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Substring with Concatenation of All Words
阅读量:5010 次
发布时间:2019-06-12

本文共 1831 字,大约阅读时间需要 6 分钟。

You are given a string, S, and a list of words, L, that are all of the same length. Find all starting indices of substring(s) in S that is a concatenation of each word in L exactly once and without any intervening characters.

For example, given:

S"barfoothefoobarman"
L["foo", "bar"]

You should return the indices: [0,9].

(order does not matter).

使用了 HashMap来降低时间复杂度, 整个的算法很简单。

1 public class Solution { 2      int elen = 0; 3     public ArrayList
findSubstring(String S, String[] L) { 4 // Note: The Solution object is instantiated only once and is reused by each test case. 5 ArrayList
result = new ArrayList
(); 6 if(S == null || S.length() == 0) return result; 7 int slen = S.length(); 8 int n = L.length; 9 elen = L[0].length();10 HashMap
hm = new HashMap
();11 for(int i = 0; i < n; i ++){12 if(hm.containsKey(L[i])) 13 hm.put(L[i], hm.get(L[i]) + 1);14 else 15 hm.put(L[i], 1);16 }17 for(int i = 0; i <= slen - n * elen; i ++){18 if(hm.containsKey(S.substring(i, i + elen)))19 if(checkOther(new HashMap
(hm), S, i))20 result.add(i);21 }22 return result;23 }24 public boolean checkOther(HashMap
hm, String s, int pos){25 if(hm.size() == 0) return true;26 if(hm.containsKey(s.substring(pos, pos + elen))){27 if(hm.get(s.substring(pos, pos + elen)) == 1) 28 hm.remove(s.substring(pos, pos + elen));29 else 30 hm.put(s.substring(pos, pos + elen), hm.get(s.substring(pos, pos + elen)) - 1);31 return checkOther(hm, s, pos + elen);32 }33 else return false;34 }35 }

 

转载于:https://www.cnblogs.com/reynold-lei/p/3403138.html

你可能感兴趣的文章
jvm参数
查看>>
3-1 案例环境初始化
查看>>
读《构建之法》第四章和十七章有感
查看>>
01背包
查看>>
开发一个12306网站要多少钱?技术分析12306合格还是不合格
查看>>
Selenium 入门到精通系列:六
查看>>
HTTP与TCP的区别和联系
查看>>
android 实现2张图片层叠效果
查看>>
我个人所有的独立博客wordpress都被挂马
查看>>
html5——动画案例(时钟)
查看>>
调用Android系统“应用程序信息(Application Info)”界面
查看>>
ios中用drawRect方法绘图的时候设置颜色
查看>>
Django 基于session认证 小作业
查看>>
数据库中的外键和主键理解
查看>>
个人博客03
查看>>
Expression<Func<T,TResult>>和Func<T,TResult>
查看>>
文件缓存
查看>>
关于C语言中return的一些总结
查看>>
Codeforces Round #278 (Div. 2)
查看>>
51. N-Queens
查看>>