Redian新闻
>
前段时间关于Nikon D800价格的帖子准确吗?
avatar
前段时间关于Nikon D800价格的帖子准确吗?# PhotoGear - 摄影器材
s*b
1
Substring with Concatenation of All Words
这个题,我做了多少次了,今晚看到,还是忘了思路。
不知道各位怎么样?
avatar
m*u
2
真的是亏废掉了,改回灰原头像
我的发紫啊
avatar
S*g
3
最近有update否?
avatar
w*o
4
录成音频开车听 不信你还记不住
avatar
b*6
5
有,最新rumor是$1800
N+打算跟打印机厂死磕了
avatar
y*u
6
加油啊叔
avatar
e*t
7
1800 的D800?
那可以all in了啊
我尼的时代到了?
avatar
w*o
8
叔我来啦!
这道题就是说你先查一下words里每个单词的个数。注意每个单词都是等长的。
然后遍历字符串 像拿一根格尺,挨个比量一下,就可以了。
比如说:从 "barfoothefoobarman" 里找 ["foo", "bar"] 的链接
你先查一下,得到["foo": 1个, “bar” 1个]
然后遍历字符串
"barfoothefoobarman"
i
j
从i开始 截取3个字符是bar 然后你就 只需要再找["foo" 1个]
"barfoothefoobarman"
i
j
从j开始 截取3个是foo 然后就都找全了,可以把 i 放入结果里。
然后以每个i为开头的时候,都需要一个新的查数的表。
代码如下:
class Solution {
public List findSubstring(String s, String[] words) {
List res = new ArrayList<>();
int n = words.length, len = words[0].length();
Map map = new HashMap<>();
for (String w : words) map.put(w, map.getOrDefault(w, 0) + 1);
for (int i = 0; i <= s.length() - len * n; i++) {
Map m = new HashMap<>(map);
for (int j = 0; j < n; j++) {
String str = s.substring(i + j * len, i + j * len + len);
if (!m.containsKey(str)) break;
else {
m.put(str, m.get(str) - 1);
if (m.get(str) == 0) m.remove(str);
if (m.isEmpty()) res.add(i);
}
}
}
return res;
}
}
avatar
S*g
9
sounds better!
avatar
l*r
10
就是用sliding window的思路, 就不难了
avatar
C*y
11
那岂不是我可以把我d700的预期降到800?
avatar
v*s
12
这是anagram的变种
外层循环找字典里任意字的开始位置,step size 1
内层循环和Anagram完全一样 step size n
avatar
T*i
13
请不要误导刷瓶小朋友。日本公司从来就没有恶性竞争的时候。

【在 b********6 的大作中提到】
: 有,最新rumor是$1800
: N+打算跟打印机厂死磕了

avatar
e*t
14
真的1800 的话 单反市场该洗牌了
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。