5713. 字符串中不同整数的数目
给你一个字符串
word
,该字符串由数字和小写英文字母组成。请你用空格替换每个不是数字的字符。例如,
"a123bc34d8ef34"
将会变成" 123 34 8 34"
。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):"123"
、"34"
、"8"
和"34"
。返回对
word
完成替换后形成的 不同 整数的数目。只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。
class Solution {
public int numDifferentIntegers(String word) {
int len=word.length();
word=word.replaceAll("[^\\d]"," ");
String arr[]=word.split(" ");
HashSet<String> set = new HashSet<>();
for (String s : arr) {
if(s.length()==0){
continue;
}
int j=0;
while(s.charAt(j)=='0'&&j<s.length()-1){
j++;
}
set.add(s.substring(j,s.length()));
}
return set.size();
}
}
坑
前导零,不止一个的前导零
- substring处理
溢出
- 长字符串和整数转换就不要考虑parse了,一定会有long溢出的,直接判断格式就vans了
技巧
1.String按下标查找:.charAt(int index);
2.subString左闭右开
3.不可重复无序集Hashset计算个数
4.正则表达式和replace结合