洛谷【LGR-160-Div.2】洛谷 10 月月赛 I T1 string[_view] 题解

粗略版

一道模拟题,用map来辅助,照着题目说的做就行了。
map存变量。

详细版

string 函数存"":存"",答案加长度;
string 函数存变量:存变量,答案加变量长度;
string_view 函数存"":存"";
string_view 函数存变量:存变量;

易错点版

  1. 循环完到某个点并 break 后,记得 i++
  2. 如果是 "",还要 i++
  3. 存变量的也得存那个变量

代码版

#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;
}
posted @ 2023-10-01 15:20  yuzihang  阅读(56)  评论(0)    收藏  举报