Find All Anagrams in String 高频题
严氏北美IT公司面试真题汇总和解答论坛 :: LinkedIn公司面试真题: 注册用户可以看到隐藏题目:2017年下半年上机题,8 9 10三个月的onsite面试真题 :: 数据结构的使用:HashMap
Page 1 of 1
Find All Anagrams in String 高频题
public List<Integer> findAnagramsByHashMap(String s, String p) {
List<Integer> result = new ArrayList<>();
if (s == null || s.length() == 0) {
return result;
}
if (p.length() > s.length()) {
return result;
}
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < p.length(); i++) {
char c = p.charAt(i);
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
}
int match = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (map.containsKey(c)) {
map.put(c, map.get(c) - 1);
if (map.get(c) == 0) {
match++;
}
}
if (i >= p.length()) {
c = s.charAt(i - p.length());
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
if (map.get(c) == 1) {
match--;
}
}
}
if (match == map.size()) {
result.add(i - p.length() + 1);
}
}
return result;
}
List<Integer> result = new ArrayList<>();
if (s == null || s.length() == 0) {
return result;
}
if (p.length() > s.length()) {
return result;
}
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < p.length(); i++) {
char c = p.charAt(i);
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
}
int match = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (map.containsKey(c)) {
map.put(c, map.get(c) - 1);
if (map.get(c) == 0) {
match++;
}
}
if (i >= p.length()) {
c = s.charAt(i - p.length());
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
if (map.get(c) == 1) {
match--;
}
}
}
if (match == map.size()) {
result.add(i - p.length() + 1);
}
}
return result;
}
严氏北美IT公司面试真题汇总和解答论坛 :: LinkedIn公司面试真题: 注册用户可以看到隐藏题目:2017年下半年上机题,8 9 10三个月的onsite面试真题 :: 数据结构的使用:HashMap
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum