2 条题解
-
0
#include<bits/stdc++.h> using namespace std; int p1,p2,p3; string s1,s2; int st; int main() { cin>>p1>>p2>>p3; cin>>s1; for(int i=1;i<s1.size()-1;i++){//排除第一个和最后一个的位置,防止访问越界 if(s1[i]=='-'){ int a=s1[i-1], b=s1[i+1]; if(b>a){ if((a>=97&&a<=122&&b<=122&&b>=97)||(b<=57&&b>=48&&a>=48&&a<=57)){//同数或同字母 s2.clear(); st=b-a; if(st==1){ s1.replace(i,1,""); continue; } //需注意,只有字母才能被大小写函数置换,数字不会受到影响 if(p1==1){for(int j=1;j<st;j++){ s2+=string(p2,tolower(a+j));}} if(p1==2){for(int j=1;j<st;j++){ s2+=string(p2,toupper(a+j));}} if(p1==3){ for(int j=1;j<st;j++){ s2+=string(p2,'*'); } } if (p3 == 2) reverse(s2.begin(), s2.end()); s1.replace(i,1,s2);//替换 } } } } cout<<s1; return 0; }
-
0
字符串模拟
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 1; int p1, p2, p3; string str, ans; int main() { cin >> p1 >> p2 >> p3 >> str; for (int i = 0; i < str.size(); i++) { if (str[i] == '-' && i > 0 && i + 1 < str.size() && str[i - 1] < str[i + 1]) { char a = str[i - 1], b = str[i + 1]; if (isdigit(a) && isdigit(b) || isalpha(a) && isalpha(b)) { if (a + 1 < b) { string tem; for (int c = a + 1; c < b; c++) { if (p1 == 1) tem += string(p2, tolower(c)); if (p1 == 2) tem += string(p2, toupper(c)); if (p1 == 3) tem += string(p2, '*'); } if (p3 == 2) reverse(tem.begin(), tem.end()); ans += tem; } } else ans += str[i]; } else ans += str[i]; } cout << ans; return 0; }
- 1
信息
- ID
- 1265
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 4
- 标签
- 递交数
- 109
- 已通过
- 49
- 上传者