ZZULIOJ 2371: 小新同学的JSON串

8 篇文章 0 订阅

题目描述
小新同学最近接触了一个叫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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值