#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];
}
代码核心
-
填充子串的条件判断
字母子串填充条件
数字子串填充条件
特殊情况:直接后继,不输出'-'。否则,直接输出。
-
填充操作
特殊处理
一班情况:填充字母子串,填充数字子串。