1 条题解

  • 1
    @ 2026-3-9 18:19:50
    #include<bits/stdc++.h>
    
    using namespace std;
    
    vector<string> split(string s)
    {
        vector<string> res;
        int lastpos = 0;
        if(s.find('_') != string::npos)
        {
            s = '_' + s + '_';
            for(int i = 1; i < s.size(); i ++)
                if(s[i] == '_')
                {
                    res.push_back(s.substr(lastpos + 1, i - lastpos - 1));
                    lastpos = i;
                }
        }
        else
        {
            s = s + 'A';
            for(int i = 1; i < s.size(); i ++)
                if(isupper(s[i]))
                {
                    res.push_back(s.substr(lastpos, i - lastpos));
                    lastpos = i;
                }
        }
        if(res.empty()) res.push_back(s);
        return res;
    }
    
    int main()
    {
        int n;
        string pattern, s;
        cin >> n >> pattern;
        for(int i = 1; i <= n; i ++)
        {
            cin >> s;
            auto v = split(s);
            string ans;
            if(pattern != "Snake")
            {
                for(auto u : v) 
                {
                    u[0] = toupper(u[0]);
                    ans += u;
                }
                if(pattern == "Camel") ans[0] = tolower(ans[0]);
            }
            else
            {
                for(auto u : v) 
                {
                    u[0] = tolower(u[0]);
                    ans += "_" + u;
                }
                ans = ans.substr(1);
            }
            cout << ans << '\n';
        }
    }
    
    • 1

    信息

    ID
    621
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    84
    已通过
    16
    上传者