1 条题解

  • 0
    @ 2025-4-9 11:20:46
    #include <iostream>
    #include <vector>
    #include<sstream>
    using namespace std;
    
    void lowHighTransform(string &input)
    {
        int low=0,high=0;
        // 对比大小写哪个多
        for(int i=0;i<input.length();i++)
        {
            char tmp=input[i];
            if(isalpha(tmp))
            {
                if(islower(tmp))
                    low++;
                if(isupper(tmp))
                    high++;
            }
        }
        for(int i=0;i<input.length();i++)
        {
            if(low>high)
                input[i]=tolower(input[i]); 
            else if(low<high)
                input[i]=toupper(input[i]);
        }
        
    }
    int main(int argc, char *argv[])
    {
       int everyNchars;
       cin>>everyNchars;
       cin.ignore();
        string input;
        cin>>input;
       
        vector<string> subStrings;
        // 分割字符串
        string tmp;
        stringstream ss;
        ss<<input;
        while(getline(ss,tmp,'-'))
            subStrings.push_back(tmp);
        // 处理除了第一个以外的字符串
        string sumString;
        for(int i=1;i<subStrings.size();i++)
            sumString.append(subStrings[i]);
    
        // 创建一个新的数组存储新的子串
        vector<string> subStrings2={subStrings[0]};
        for(int i=0;i<sumString.length();)
        {
            string cut=sumString.substr(i,everyNchars);
            subStrings2.push_back(cut);
            i+=everyNchars;
        }
       
    
       for(int i=0;i<subStrings2.size();i++)
        {
            lowHighTransform(subStrings2[i]);
            cout<<subStrings2[i];
            if(i!=subStrings2.size()-1)
                cout<<"-";
        }
    
    }
    
    
    • 1

    信息

    ID
    52
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    198
    已通过
    83
    上传者