20pts繁花丛,代码求调(AC必关注)
查看原帖
20pts繁花丛,代码求调(AC必关注)
807670
francais楼主2023/10/1 12:43
#include<bits/stdc++.h>
using namespace std;
int p1,p2,p3,cnt;
char c1,c2,tmp;
string s,s1;
int main()
{
	cin>>p1>>p2>>p3>>s;
	for(int i=1;i<s.size()-1;i++)
	{
		if(s[i]!='-') continue;
		c1=s[i-1];
		c2=s[i+1];
		s1.erase();
		if(islower(c1)&&islower(c2)||isalpha(c1)&&isalpha(c2))
		{
			if(c2-c1==1) s.erase(i);
			if(c1>=c2 or c2-c1==1) continue;
			if(p1==1)
			{
				s.erase(i);
				for(char c=c1+1;c<c2;c++)
				{
					for(int j=0;j<p2;j++)
					{
						s1.push_back(c);
						i++;
					}
				}
			}
			else if(p1==2)
			{
				s.erase(i);
				for(char c=c1+1;c<c2;c++)
				{
					for(int j=0;j<p2;j++)
					{
						tmp=c;
						if(islower(tmp)) tmp-=32;
						s1.push_back(tmp);
						i++;
					}
				}
			}
			else
			{
				s.erase(i);
				for(char c=c1+1;c<c2;c++)
				{
					for(int j=0;j<p2;j++)
					{
						s1.push_back('*');
						i++;
					}
				}
			}
			if(p3==2) reverse(s1.begin(),s1.end());
		}
		s.insert(i,s1);
	}
	cout<<s;
	return 0;
}
2023/10/1 12:43
加载中...