提交代码1(60分)
第一次模拟写的,只能过60 %, 没找到哪里的问题
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int main()
{
string s;
int p1, p2, p3;
cin >> p1 >> p2 >> p3;
cin >> s;
auto get = [&](int p1, int p2, int p3)
{
int n = s.length();
for (int i = 1; i < n - 1; i++)
{
if (s[i] != '-')
continue;
string ss = "";
char bf = s[i - 1], nt = s[i + 1];
if (bf >= nt)
continue;
if (isdigit(bf) && isdigit(nt))
;
else if (isalpha(bf) && isalpha(nt))
{
if (p1 == 1)
bf = tolower(bf), nt = tolower(nt);
else if (p1 == 2)
bf = toupper(bf), nt = toupper(nt);
}
else
continue;
for (int num = bf + 1; num <= nt - 1; num++)
for (int t = 1; t <= p2; t++)
{
char ch = num;
if (p1 == 3)
ch = '*';
ss.push_back(ch);
}
if (p3 == 2)
reverse(ss.begin(), ss.end());
s.erase(i, 1);
s.insert(i, ss);
}
};
get(p1, p2, p3);
cout << s;
return 0;
}
提交代码2
后面直接输出了, 我就没插入, 想了下, 插入可能还会慢一点, 遇到 -
不输出就行了
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const int inf = INT_MAX;
typedef pair<int, int> pii;
typedef priority_queue<int, vector<int>, greater<int>> small_heap;
#define int long long
string s, ans;
char ch1, ch2;
bool judge(int i)
{
if (isdigit(s[i - 1]) && isdigit(s[i + 1]))
return 1;
if (isalpha(s[i - 1]) && isalpha(s[i + 1]))
return 1;
return 0;
}
int32_t main()
{
int p1, p2, p3, tips;
cin >> p1 >> p2 >> p3;
cin >> s;
int n = s.length();
for (int i = 0; i < n; i++)
{
if (s[i] == '-' && s[i - 1] < s[i + 1] && judge(i))
{
ans = "";
ch1 = s[i - 1], ch2 = s[i + 1];
for (tips = 1; ch1 + tips < ch2; tips++)
{
if (p1 == 1)
for (int i = 1; i <= p2; i++)
ans += (ch1 + tips);
else if (p1 == 2)
for (int i = 1; i <= p2; i++)
ans += toupper(ch1 + tips);
else if (p1 == 3)
for (int i = 1; i <= p2; i++)
ans += "*";
}
if (2 == p3 ) reverse(ans.begin() , ans.end());
cout << ans;
}
else cout << s[i];
}
return 0;
}
加油, 再接再厉