题目描述
输入一个或多个车牌号码,多个以逗号分割开,再输入想查询的日期(数字,周几),输出该日期限行的车牌号
车牌号码有以下要求,只要取后五位,如:AD123,12101,车牌号不可能全是字母。
*现在对尾号进行限制:尾号为1,9则周一限行,尾号为2,8则周二限行,尾号为3,7则周三限行 尾号为4,6则周四限行,尾号为5,0的周五限行,周六周日不限行。
*尾号不为数字,则看第4位是否是数字,如果第4位还不是 数字,继续看第3位,以此下去,直到找到有数字的时候止.
*由于用户不熟悉系统,有可能输入错误车牌,如车牌不满5位或大于5位、车牌全是字母、没用逗号分割等,如有输入错误情况 一律返回error
*如输入没有问题则返回限行的车牌号,如没有,刚返回none
输入描述:
一个或多个车牌号码
周几
输出描述:
限行的车牌号,如没有限行的则返回none
示例1
输入
Y008U,T8899 2
输出
Y008U
在输入的总字符串后面加上',',这样就方便处理了,这是一个小技巧。
然后对每个分割开的字符串进行判断
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
vector<string> ans;
string str;
int n;
cin >> str;
cin >> n;
str += ',';
string temp = "";
bool alpa = true;
for(int i = 0; i < str.size(); ++i)
{
if(str[i] == ',')
{
if(temp.size() != 5)
{
cout << "error" << endl;
return 0;
}
for(int j = temp.size() - 1; j >= 0; j--)
{
if(temp[j] >= '0' && temp[j] <= '9')
{
alpa = false;
if(temp[j] - '0' == n)
ans.push_back(temp);
break;
}
}
if(alpa)
{
cout << "error" << endl;
return 0;
}
alpa = true;
temp = "";
}
else if(str[i] >= 'A' && str[i] <= 'Z')
{
temp += str[i];
}
else
{
cout << "error" << endl;
return 0;
}
}
if(ans.size() == 0)
cout << "node" << endl;
else
for(string s : ans)
cout << s << endl;
return 0;
}