70pts 求调 -已解决

题面

#include <bits/stdc++.h>
using namespace std;


int p1,p2,p3;
string s;
//当p3 = 1时输出
void output1() {
    for(int i = 0;i < s.size();i++) {
        if(s[i] != '-') {
            cout << s[i];
            continue;
        }
        //判断开头结尾是否一样
        bool start = (s[i - 1] >= '0' && s[i - 1] <= '9');
        bool stop = (s[i + 1] >= '0' && s[i + 1] <= '9');
        if(start ^ stop || s[i - 1] == s[i + 1] || s[i + 1] < s[i - 1]) {
            cout << s[i];
            continue;
        }
        for(int j = s[i - 1] + 1;j < s[i + 1];j++) {
            char out;
            if(p1 == 3) {
                out = '*';
            }
            else if(start) {
                out = j;
            }
            else if(p1 == 1) {
                if(s[i - 1] >= 'a' && s[i - 1] <= 'z') {
                    out = j;
                }
                else {
                    out = j + 32;
                }
            }
            else if(p1 == 2) {
                if(s[i - 1] >= 'a' && s[i - 1] <= 'z') {
                    out = j - 32;
                }
                else {
                    out = j;
                }
            }
            for(int k = 1;k <= p2;k++) {
                cout << out;
            }
        }
    }
}
//当p3 = 2时输出
void output2() {
    for(int i = 0;i < s.size();i++) {
        if(s[i] != '-') {
            cout << s[i];
            continue;
        }
        //判断开头结尾是否一样
        bool start = (s[i - 1] >= '0' && s[i - 1] <= '9');
        bool stop = (s[i + 1] >= '0' && s[i + 1] <= '9');
        if(start ^ stop || s[i - 1] == s[i + 1] || s[i + 1] < s[i - 1]) {
            cout << s[i];
            continue;
        }
        //反向输出
        for(int j =s[i + 1] - 1;j > s[i - 1];j--) {
            char out;
            if(p1 == 3) {
                out = '*';
            }
            else if(start) {
                out = j;
            }
            else if(p1 == 1) {
                if(s[i - 1] >= 'a' && s[i - 1] <= 'z') {
                    out = j;
                }
                else {
                    out = j + 32;
                }
            }
            else if(p1 == 2) {
                if(s[i - 1] >= 'a' && s[i - 1] <= 'z') {
                    out = j - 32;
                }
                else {
                    out = j;
                }
            }
            for(int k = 1;k <= p2;k++) {
                cout << out;
            }
        }
    }
}


int main(){
    cin >> p1 >> p2 >> p3;
    cin >> s;
    if(p3 == 1) {
        output1();
        return 0;
    }
    output2();
    return 0;
}

全部评论

相关推荐

04-01 16:02
已编辑
武汉工程大学 Java
牛客98843461...:处女面??我还种马面渣男面处男面呢
点赞 评论 收藏
分享
04-15 09:59
门头沟学院 C++
yy_11:小公司人家没必要泄密,大公司都是本地部署了
你想吐槽公司的哪些规定
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务