力扣1805. 字符串中不同整数的数目 类型:字符串,简单 前言:我不知道为什么力扣上为什么那么多花里胡哨的题解,不要把简单的题目想复杂了啊!ψ(`?′)ψ
题目描述:
给你一个字符串 word ,该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。例如,“a123bc34d8ef34” 将会变成 " 123 34 8 34" 。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):“123”、“34”、“8” 和 “34” 。 返回对 word 完成替换后形成的 不同 整数的数目。 只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。
示例1??:
输入:word = "a123bc34d8ef34"
输出:3
解释:不同的整数有 "123"、"34" 和 "8" 。注意,"34" 只计数一次。
示例2??:
输入:word = "leet1234code234"
输出:2
示例3??:
输入:word = "a1b01c001"
输出:1
解释:"1"、"01" 和 "001" 视为同一个整数的十进制表示,因为在比较十进制值时会忽略前导零的存在。
提示:
1 <= word.length <= 1000
word 由数字和小写英文字母组成
分析:
对整数字符串进行存储,对字母字符,将其变为空格,简单地遍历一遍即可。
代码解题1:
class Solution {
public:
int numDifferentIntegers(string word) {
set<string>jie;
for(int i=0;i<word.size();i++){
string tmp="";
if(isdigit(word[i])){
while(isdigit(word[i])&&i<word.size()){
tmp+=word[i];
if(tmp=="0")tmp="";
i++;
}
jie.insert(tmp);
}
else word[i]=' ';
}
return jie.size();
}
};
AC:
当然也可以进行字符串的剪切,不过那个玩法我还玩的不熟O(∩_∩)O,我找时间试一下。
补充知识:
1.set容器具备自动排序的功能,对字符串排序时按字典序排; 2.
#include<ctype.h>
函数原型:bool isdigit(char ch) ;如果字符ch为数字字符,返回真
|