- 题解
DAY5字符串题解
- @ 2024-8-9 18:45:50
题意解析
输入一个字符串和三个参数并按以下规则进行扩写 诺输入了“-”号且左边字符小于右边字符则进行扩写 a-d则扩写为abcd 1.p1为1则字母扩写为小写 2.p1为2则字母扩写为大写 3.p1为3则扩写为“*” 4.扩写p2个 5.p3为1正序扩写 6.p3为2逆序扩写 7.左边字符为右边前一个则删去“-”去
思路解析
循环遍历字符串,利用多重if判断将不同情况分开解决
#include<bits/stdc++.h>
using namespace std;
int p1,p2,p3;
string s;
int main(){
//freopen("zfc.in", "r", stdin);
//freopen("zfc.out", "w", stdout);
cin>>p1>>p2>>p3>>s;
for(int i=0;i<s.size();i++){
string ns;
cout<<s[i];
if(s[i+1]=='-'){//有"-"号
if(s[i]>=s[i+2])continue;//左边字符大于右边字符
else if('0'<=s[i] and '9'>=s[i] and 'a'<=s[i+2] and 'z'>=s[i+2])continue;//左边边字母右边数字
else if('0'<=s[i] and '9'>=s[i] and '0'<=s[i+2] and '9'>=s[i+2]){//数字单独处理
if(p1!=3){
for(int j=1;j<s[i+2]-s[i];j++){
char x=char(s[i]+j);
for(int z=1;z<=p2;z++)ns=ns+x;
}
}
else{
for(int j=1;j<s[i+2]-s[i];j++){
for(int z=1;z<=p2;z++)ns=ns+'*';
}
}
}
else if(s[i]=='-'){//连续"-"号
continue;
}
else if(p1==1){//扩为小写
for(int j=1;j<s[i+2]-s[i];j++){
for(int z=1;z<=p2;z++)ns=ns+char(s[i]+j);
}
}
else if(p1==2){//扩为大写
for(int j=1;j<s[i+2]-s[i];j++){
char x=char(s[i]+j-'a'+'A');
for(int z=1;z<=p2;z++)ns=ns+x;
}
}
else if(p1==3){//扩为"*"号
for(int j=1;j<s[i+2]-s[i];j++){
for(int z=1;z<=p2;z++)ns=ns+'*';
}
}
if(p3==1)cout<<ns;
else for(int j=ns.size()-1;j>=0;j--)cout<<ns[j];//倒序输出
i++;
}
}
}
0 条评论
目前还没有评论...