#include <bits/stdc++.h>

#include using namespace std;

int p1,p2,p3;

string str;

//填充函数

void print(int i) {

char per=str[i-1];
char pos=str[i+1];

//特殊处理
    if(p1==3)
    {     for(int i=per+1;i<pos;i++)
                for(int i=0;i<p2;i++)
                    cout<<'*';
     return;
    }

string strtemp="";
int flag=0;

if(p1==2) flag=1;

//填充字母子串
if(str[i-1]>='a')
{
    for(int x=per+1;x<pos;x++)
        for(int j=0;j<p2;j++)
            strtemp.push_back(char(x-('a'-'A')*flag));
}
else
{
     //填充数字子串
 for(int i=per+1;i<pos;i++)
            for(int j=0;j<p2;j++)
                strtemp.push_back(char(i));
}

if(p3==2)
    reverse(strtemp.begin(),strtemp.end());
cout<<strtemp;
strtemp.clear();

}

int main() {

cin>>p1>>p2>>p3;//读入参数
cin>>str;//读入字符串
cout<<str[0];
int len=str.size();
for(int i=1;i<len-1;i++)
{//满足填充条件
    if(str[i]=='-'&&((str[i-1]>='a'&&str[i-1]<='z'&&str[i+1]>='a'&&str[i+1]<='z'&&str[i+1]>str[i-1])||(str[i-1]>='0'&&str[i-1]<='9'&&str[i+1]>='0'&&str[i+1]<='9'&&str[i-1]<str[i+1])))
        print(i);
    else
        cout<<str[i];
}
cout<<str[str.size()-1];

}

代码核心

  • 填充子串的条件判断

    字母子串填充条件

    数字子串填充条件

    特殊情况:直接后继,不输出'-'。否则,直接输出。

  • 填充操作

    特殊处理

    一班情况:填充字母子串,填充数字子串。