题解
提取数字
1 条题解
-
0
解题思路
一个字符串里藏着好多数字,我们要按它们出现的顺序,一个个把它们"揪"出来。
可以想象成:一盒混装糖果里除了糖果还有石头,我们要把糖果(数字字符)挑出来,按顺序排成一排。
做法:
- 用
getline(cin, s)读整行,因为字符串里可能有空格; - 从头到尾看每一个字符;
- 如果这个字符是数字(在
0到9之间),就直接把它输出; - 不是数字的字符统统跳过。
判断一个字符是不是数字,就看它是不是在
0和9之间,写成s[i] >= '0' && s[i] <= '9'。注意:输出的时候不要换行,所有数字连着输出,最后统一换行。比如样例
for(int i=0;i<5;i+=1) cout<<9;里藏着数字0、5、1、9,连起来就是0519。参考代码
// 提取数字:按出现顺序输出字符串中的所有数字字符 #include <iostream> using namespace std; int main(){ string s; getline(cin,s); // 字符串可能含空格,用getline读整行 int n=s.size(); // n记录字符串长度 for(int i=0;i<n;i++){ if(s[i]>='0'&&s[i]<='9') cout<<s[i]; // 是数字字符就直接输出 } cout<<endl; return 0; }复杂度分析
- 时间复杂度:每个字符检查一次,长度是 n,所以是 O(n)。
- 空间复杂度:只用了一个字符串和循环变量,额外空间是 O(1)。
- 用
- 1