P1098字符串的展开
  • 板块题目总版
  • 楼主panbaokun123
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/2/8 18:02
  • 上次更新2023/10/24 01:23:36
查看原帖
P1098字符串的展开
824353
panbaokun123楼主2023/2/8 18:02

大佬能给看一下哪里出错了吗,样例可以过,但测试点过不了,自己过了一遍也没看出错在哪里

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int p1, p2, p3;
string s;
string ans;

void _p_1_2_3(char c1,char c2)
{
	int pos1 = ans.size();
	int q = c2 - c1 - 1;
	if (p1 == 1)
	{
		for (int i = (int)c1+1; i < (int)c2; i++)
		{
			for (int j = 0; j < p2; j++)
				ans += (char)i;
		}
	}
	else if (p1 == 2)
	{
		for (int i = c1-'a'+65+1; i < c2-'a'+65; i++)
		{
			for (int j = 0; j < p2; j++)
				ans += (char)i;
		}
	}
	else
	{
		for (int i = (int)c1 + 1; i < (int)c2; i++)
		{
			for (int j = 0; j < p2; j++)
				ans += '*';
		}
	}

	if (p3 == 2)
		reverse(ans.begin() + pos1, ans.begin() + pos1 + q*p2);
}


int main()
{
	cin >> p1 >> p2 >> p3;
	getchar();
	getline(cin, s);

	for (int i = 0; i < s.size(); i++)
	{
		if (s[i] != '-')
			ans += s[i];
		else if (s[i] == '-' && s[i + 1] - s[i - 1] == 1)
			continue;
		else if (s[i] == '-' && s[i + 1] - s[i - 1] <= 0)
			ans += s[i];
		else if (s[i] == '-' && (s[i - 1] >= '0' && s[i - 1] <= '9') && (s[i + 1] >= 'a' && s[i + 1] <= 'z'))
			ans += s[i];
		else
			_p_1_2_3(s[i - 1], s[i + 1]);
	}
	
	cout << ans << endl;

	return 0;
}
2023/2/8 18:02
加载中...