C++在线编程处理特殊数组输入[1,2,3,4,5]

C++在线编程处理特殊数组输入[1,2,3,4,5],第1张

对于牛客等平台在进行在线编程时,通常需要手动编写数据的输入部分。对于常规的数组通常按照如下规则(空格分隔)进行输入,对于此类输入,直接可以在for循环里面使用多次cin来对数组的元素进行输入。

Input: 1 2 3 4 5

vector nums;
for(int i = 0; i < 5; i++)
{
    int tmp;
    cin>>tmp;
    nums.push_back(tmp);
}

        但是对于如下所示的输入,则需考虑中括号[]和逗号,对数据输入造成的影响,否则可能在处理数据输入时就出现了错误,导致后面程序的通过率一直为0。对于此类输入,我们可以将该行数据按照字符串类型进行输入,然后通过对字符串进行分割的方式来获取每一个元素,具体实现流程如下:

Input: [1,2,3,4,5]

//1.按照字符串类型读取整行的输入
string str;
getline(cin, str);

//2.对整行的字符串按照"[","]",","进行分割,使用index记录下标值
vector index;
for (int i = 0; i < str.size(); i++)
{
    if(str[i] == '[' || str[i] == ',' || str[i] == ']')
        index.push_back(i);
}

//3.按照步骤2查找到的下标值对数据进行分割,使用取子串的方法(substr)和字符串转数字的方法(stoi)
int start = 1;
vector nums;
for (int i = 1; i < index.size(); i++)
{
    string tmp = str.substr(start, index[i] - start);
    nums.push_back(stoi(tmp));
    start = index[i] + 1;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/707239.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-24
下一篇 2022-04-24

发表评论

登录后才能评论

评论列表(0条)

保存