每日一题——December

前言

12月份每日一题记录~

1805. 字符串中不同整数的数目

给你一个字符串 word ,该字符串由数字和小写英文字母组成。

请你用空格替换每个不是数字的字符。例如,”a123bc34d8ef34” 将会变成 “ 123 34 8 34” 。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):”123”、”34”、”8” 和 “34” 。

返回对 word 完成替换后形成的 不同 整数的数目。

只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。

1
2
3
输入:word = "a123bc34d8ef34"
输出:3
解释:不同的整数有 "123"、"34" 和 "8" 。注意,"34" 只计数一次。

思路:双指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public int numDifferentIntegers(String word) {
Set<String> set = new HashSet<String>();
int n = word.length(),left = 0,right;
while(true){
while(left < n && !Character.isDigit(word.charAt(left))){
left++;
}
if(left == n) break;
right = left;
while(right < n && Character.isDigit(word.charAt(right))){
right++;
}
while(right - left > 1 && word.charAt(left) == '0'){
left++;
}
set.add(word.substring(left,right));
left = right;
}
return set.size();
}
}