对于一个数组,如果输入的形式是字符串,如“[1,2,3,4]”,我们没法直接使用里面的数字,为此,要将数字提取出来。
若key=false且当前字符是数字,则当前字符是该数的第一个字符,加入数组中,如果其前一个字符为负号,则该数为负数。若key=true且当前字符是数字,则当前字符不是数字的第一个字符,要与数组中的最后一个数字进行组合。
vector<int> strToArr(string str){
int len = str.size();
vector<int> res;
bool key = false;
for (int i = 0; i < len; i++){
if (str[i] >= '0' && str[i] <= '9'){ //遇到数字
if (key)//不是数字的第一个字符
*(res.end()-1) = *(res.end()-1) * 10 + str[i] - '0';
else{
int tmp = str[i]-'0';
if (str[i-1] == '-')//负数
tmp *= -1;
res.push_back(tmp);//将数字的第一个字符添加到数组中
key = true;
}
}
else//遇到的不是数字
key = false;
}
return res;
}