求助 只能把‘-’去掉
查看原帖
求助 只能把‘-’去掉
761995
Cddaza000楼主2022/10/16 16:07
#include <bits/stdc++.h>
using namespace std;
string s;
int main()
{
	int p1,p2,p3,slen;
	bool flag=true;
	cin>>p1>>p2>>p3;
	cin>>s;
	slen=s.size();
	if(p1==3) flag=false;
	for(int i=0;i<slen;i++){
		
		if(s[i]!='-' && s[i+1]!='-' && s[i-1]!='-') cout<<s[i]; //判断是否是折叠的字符串 
		
		else if(s[i+1]=='-'){ //如果是折叠字符串的第一个数
		
			if(s[i+2]<=s[i]){ //如果-右边的数ACSLL码<=a[i] 直接输出 
				cout<<s[i]<<s[i+1]<<s[i+2];
				continue; 
			}
			
			string t;//展开后的字符串
			int tlen;
			cout<<s[i];
			
			for(int i=s[i]+1;i<s[i+2];i++){ //填充
				for(int j=1;j<=p2;j++){ //填充次数
					if(!flag){ //如果p1==3 填充* 
						t+='*';
						continue;
					}
					t+=char(i);
				}
			}
			
			tlen=t.size();
						
			if(p1==2 && !isdigit(s[i])){ //如果p1=2 && s[i]不是数字 换成大写字母 
				for(int i=0;i<tlen;i++){
					t[i]-='a'-'A';
				}
			}
			
			if(p3==2){
				for(int i=tlen-1;i>=0;i--) cout<<t[i];
				cout<<s[i+2];
				continue;
			}
			cout<<t;
			cout<<s[i+2];
		}
	}
	return 0;
}

每一小块代码单独拿出来跑都是没问题的 放在一起就只能去'-'了 dalao救命

2022/10/16 16:07
加载中...