【数据结构入门训练DAY-16】提取数字串按数值排序

文章目录

  • 前言
  • 一、题目
  • 二、解题思路
  • 总结

前言

本次训练内容:

  1. STL的复习。
  2. 训练字符串的解题操作。
  3. 训练解题思维。

一、题目

        给定一个字符串,请将其中的所有数字串提取,并将每个数字串作为整数看待(假设可以用int 表示),按从小到大顺序输出结果,输出的整数之间以逗号间隔。如果没有数字,则输出0;例如:*1234.345#6781ad9jk81-11101?aght88ir09kp,其中的整数包括:1234,345,6781,9,81,11101,88,9,从小到大排序后,应该输出:
9,9,81,88,345,1234,6781,11101

输入格式

在一行内输入一串符号,长度不大于300。输入数据保证提取的整数不超过109。

输出格式

从小到大排序的整数序列,如果没有数字,则输出0。

样例输入

*1234.345#6781ad9jk81-11101?aght88ir09kp

样例输出

9,9,81,88,345,1234,6781,11101

二、解题思路

        本道题主要是通过遍历字符串并取出对应的数字,当遇到非数字时停止取出,然后循环判断字符串直到结束。我的想法是用vector容器存储数,两个字符串s,s1,第一个s是接收题中的字符串,另一个s1是接收数字,然后遍历到符合条件的值时就插入容器并存储为一个元素,非数字时,清空s1让它重新开始接收数,原本的已经接收到数压入vector中存储,然后最后要判断s1末尾是否还有未处理的数字,如果有就处理它,然后使用sort排序并输出。

#include 
using namespace std;

int main() {
    string s,s1;
    getline(cin, s);
    vector num;
    for (int i=0; i 0) {
                cout << ",";
            }
            cout << num[i];
        }
    }
    return 0;
}

        现在解释一下isdigit和stoi;isdigit的作用是判断s字符串中的元素是否为十进制整数。stoi的作用是把字符串的数字转换为int型的数字。然后就是getline可以避免忽略空格的情况,这是我当时忽略的地方,后面发现这个问题我就立马修改了。

总结

        今天的题目就是对字符串的数字进行提取并排序。isdigit和stoi是没想到怎么处理字符串的数字时,网上大佬给出来的办法,我觉得挺方便的,就记下并使用了;现在对vector的基础用法越来越得心应手了,感觉良好,但是还有很多方法需要不断学习提升,后面要戒骄戒躁,保持热情,坚持刷题。

你可能感兴趣的:(数据结构入门训练,数据结构,算法)