对于牛客等平台在进行在线编程时,通常需要手动编写数据的输入部分。对于常规的数组通常按照如下规则(空格分隔)进行输入,对于此类输入,直接可以在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;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)