题目连接:该题是luogu试炼场的2-2:T5
题目大意:
1 字符串中有一些“-”的符号,按照特定的要求展开;
解题思路:
1 超级繁琐的细节分析:锻炼你细心的时间到了!
上代码:
//luogu1098:字符串的展开
//超级繁琐的细节分析
#include<cstdio>
#include<cstring>
char s[1010];
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
scanf("%s",s+1);
int n=strlen(s+1);
printf("%c",s[1]);
for(int i=2;i<n;i++)
{
if(s[i]=='-'&&s[i+1]==s[i-1]+1) continue;//直接删除-号
if(s[i]=='-'&&s[i+1]>s[i-1]&&(
(s[i+1]>='0'&&s[i+1]<='9'&&s[i-1]>='0'&&s[i-1]<='9')||
(s[i+1]>='a'&&s[i+1]<='z'&&s[i-1]>='a'&&s[i-1]<='z')||
(s[i+1]>='A'&&s[i+1]<='Z'&&s[i-1]>='A'&&s[i-1]<='Z')))
{
char x=s[i-1],y=s[i+1];
if(a==1)//要求小写
{
if(x>='A'&&x<='Z'&&y>='A'&&y<='Z')
{
x+='a'-'A'; y+='a'-'A';
}
}
if(a==2)//要求大写
{
if(x>='a'&&x<='z'&&y>='a'&&y<='z')
{
x+='A'-'a'; y+='A'-'a';
}
}
if(c==1)//正序
{
for(int j=x+1;j<y;j++)//对应的字母
{
for(int t=1;t<=b;t++)//重复输出的数量
{
if(a==3) printf("*");
else printf("%c",j);
}
}
}
else if(c==2)//逆序
{
for(int j=y-1;j>x;j--)//对应的字母
{
for(int t=1;t<=b;t++)//重复输出的数量
{
if(a==3) printf("*");
else printf("%c",j);
}
}
}
}
else printf("%c",s[i]);
}
printf("%c",s[n]);
return 0;
}