洛谷【LGR-160-Div.2】洛谷 10 月月赛 I T1 string[_view] 题解
粗略版
一道模拟题,用map来辅助,照着题目说的做就行了。
map存变量。
详细版
string 函数存"":存"",答案加长度;
string 函数存变量:存变量,答案加变量长度;
string_view 函数存"":存"";
string_view 函数存变量:存变量;
易错点版
- 循环完到某个点并 break 后,记得 i++
- 如果是 "",还要 i++
- 存变量的也得存那个变量
代码版
#include<bits/stdc++.h>
using namespace std;
map<string, string> m;
int main()
{
int t, i, ans = 0;
string s, name, str;
cin >> t;
while(t --)
{
cin >> s;
if(s == "string")
{
cin >> s;
name = "";
str = "";
for(i = 0; i < s.size(); i ++)
{
if(s[i] == '(')
{
break;
}
name = name + s[i];
}
i ++;
for(; i < s.size(); i ++)
{
if(s[i] == '"')
{
i ++;
for(; s[i] != '"'; i ++)
{
str = str + s[i];
}
m[name] = str;
ans += str.size();
break;
}
else
{
for(; s[i] != ')'; i ++)
{
str = str + s[i];
}
ans += m[str].size();
m[name] = m[str];
break;
}
}
}
else
{
cin >> s;
name = "";
str = "";
for(i = 0; i < s.size(); i ++)
{
if(s[i] == '(')
{
break;
}
name = name + s[i];
}
i ++;
for(; i < s.size(); i ++)
{
if(s[i] == '"')
{
i ++;
for(; s[i] != '"'; i ++)
{
str = str + s[i];
}
m[name] = str;
break;
}
else
{
for(; s[i] != ')'; i ++)
{
str = str + s[i];
}
m[name] = m[str];
break;
}
}
}
}
cout << ans;
return 0;
}
hello, I'm yuzihang, if you need to copy this, please quote this url: https://www.cnblogs.com/yuzihang/articles/17738879.html

浙公网安备 33010602011771号