题目描述
小新同学最近接触了一个叫JSON的数据格式(可以百度哈~), 数据结构是这样的:
{“key_1”:“value_1”,“key_2”:“value_2”}
最外面用{}括起来,里面可以是很多个key:value的键值对,key在前面,用冒号映射value,每组键值对用逗号隔开,现在学长想考察下同学们,学长会先给出一个json,然后问一些key,让你找到这个key对应的value
输入
首先输入一个json, 格式如上,然后是一个整数n,接下来n行,每行是询问的一个key,如果key不在json里面,输出"None"
数据保证: n < 10, json串中不会空格,并且其中的key和value长度不超过2,且只有数字字符和小写字母 ,json长度不超过100
输出
输出n行,每行是询问的答案
样例输入
{“1”:“2”,“2”:“3”,“1a”:“no”}
4
1
2
3
1a
样例输出
2
3
None
no
可以用map来做,key对应value;分别用两个字符串表示key和value,然后遇到空的时候就输出none;
#include<bits/stdc++.h>
using namespace std;
int main(){
string a, b, c;
cin >> a;
int k = 1, j, i;
map<string, string>mp;
int len = a.size();
for (i = k; i < len; i++){
b = "", c = "";
if (a[i] == '"' && (a[i - 1] == '{' || a[i - 1] == ',')){ //key开始的标志,逗号或者花括号加引号
for (j = i + 1; a[j] != '"'; j++)
b += a[j]; //key
for (k = j + 3; a[k] != '"'; k++) //j+3即是value的位置
c += a[k]; //value
}
mp[b] = c; //存入map
}
int t;
string q;
cin >> t;
while (t--){
cin >> q;
if (mp[q] == "") //如果key不存在,value即为空串,这时候输出None
cout << "None" << endl;
else
cout << mp[q] << endl; //输出key对应的value
}
return 0;
}