【字符串+哈希】需要记得处理前导0
class Solution {
// 7:20 5
// 字符串 + 哈希
public int numDifferentIntegers(String word) {
int n = word.length();
Set<String> set = new HashSet();
String str = "";
for (int i = 0; i < n; i++) {
char c = word.charAt(i);
if (c >= 'a' && c <= 'z') {
if (str.length() > 0) {
int j = 0, m = str.length();
while (j < m - 1 && str.charAt(j) == '0') j++;
set.add(str.substring(j, str.length()));
}
str = "";
} else {
str += c;
}
}
if (str.length() > 0) {
int j = 0, m = str.length();
while (j < m - 1 && str.charAt(j) == '0') j++;
set.add(str.substring(j, str.length()));
}
return set.size();
}
}
【Stream】用stream一行实现
class Solution {
public int numDifferentIntegers(String word) {
return Arrays.stream(word.replaceAll("[a-z]+", " ").trim().split(" ")).filter(x -> !x.isEmpty()).map(x -> x.replaceAll("\\b0+", "")).collect(Collectors.toSet()).size();
}
}