P1098字符串的展开
自认为思路没错
求大佬解答
#include<bits/stdc++.h>
using namespace std;
int p1,p2,p3,l,ans1,ans2;
string s;
char a,b;
int main()
{
cin>>p1>>p2>>p3;
getchar();
getline(cin,s);
l=s.size();
for(int i=0;i<l;i++)
{
if(s[i]!='-')
{
cout<<s[i];
continue;
}
if(i==0)
{
cout<<'-';
continue;
}
if(s[i+1]=='-'||s[i-1]=='-')
{
cout<<'-';
continue;
}
if(i==l-1)
{
cout<<'-';
continue;
}
ans1=int(s[i-1]);
ans2=int(s[i+1]);
if(ans1+1==ans2) cout<<s[i+1];
else if(ans2<=ans1) cout<<'-'<<s[i+1];
else if((s[i-1]>='0'&&s[i+1]<='9')||(s[i-1]>='a'&&s[i+1]<='z'))
{
if(p3==1)
{
for(int i=ans1+1;i<ans2;i++)
{
for(int j=1;j<=p2;j++)
{
if(char(i)>='0'&&char(i)<='9') cout<<char(i);
else
{
if(p1==1) cout<<char(i);
else if(p1==2) cout<<char(i-32);
else cout<<'*';
}
}
}
}
else
{
for(int i=ans2-1;i>=ans1+1;i--)
{
for(int j=1;j<=p2;j++)
{
if(char(i)>='0'&&char(i)<='9') cout<<char(i);
else
{
if(p1==1) cout<<char(i);
else if(p1==2) cout<<char(i-32);
else cout<<'*';
}
}
}
}
cout<<s[i+1];
}
i++;
}
cout<<endl;
return 0;
}