双指针
枚举所有的连续的数字,并处理前导零后放入set中,同时也能够完成去重,最后返回set的大小即可。
class Solution {
public:
int numDifferentIntegers(string word) {
unordered_set<string> st;
int l=-1,r=0,n=word.size();
while(r<n){
if(isdigit(word[r])){
l=r;
while(r<n-1&&isdigit(word[r+1])) r++;
while(word[l]=='0') l++;
st.insert(word.substr(l,r-l+1));
}
r++;
}
return st.size();
}
};
时间复杂度:O(n),n为字符串长度
空间复杂度:O(n)