字符串
来源:互联网 发布:js遍历多层json数据 编辑:程序博客网 时间:2024/05/16 00:21
描述
给三个参数a1,a2,a3和一个字符串,请按以下要求展开该字符串。
1. 只有当‘-’两侧两个字符同为小写字母或数字,且右边字符的ASCII值大于左边字符时才按要求展开,否则原样输出。
2. 参数a1。
a1=1,填充小写字母;a1=2,填充大写字母;a1=3,填充’*’。
a1=1和a1=2对两侧字符为数字的,无影响(还是填充数字)。比如当a-d,a1=2时展开为aBCd。2-4 a1=2时展开为234。
3. 参数a2。控制填充字符的重复次数(a2>=1)。
比如:a1=2 a2=3 a-d的展开形式为aBBBCCCd。
4. 参数a3。控制填充字符的顺序。
a3=1:顺序填充;a3=2:逆序填充。
比如:a1=1 a2=2 a3=2 a-d的展开形式为accbbd。
输入
多组测试样例。
每组测试样例占两行,第一行三个整数表示三个参数a1,a2,a3.
第二行一个字符串(只含小写字母、数字和‘-’,字符串长度不超过100)。
输出
输出展开后的字符串,每个样例占一行。
样例输入
1 2 1
bs-w1234-94-saa
3 4 2
aa-ai-ja-cd-g
bs-w1234-94-saa
3 4 2
aa-ai-ja-cd-g
样例输出
bsttuuvvw12345566778894-saa
aa-aija****cd********g
aa-aija****cd********g
本题在怀化学院TEST 2的测试数据为
输入:
1 2 1
bs-w1234-94-saa
3 4 2
aa-ai-ja-cd-g
1 2 1
----
2 3 2
--aldjld-dkljfds-k-z
3 2 1
-ab-d-a--
1 3 2
a-d-z--l-l-8-0
2 1 1
sldfjlskdjf--dlfjsd-jabddljfdla-d-fldfj9-0-9dlsfldjflj
1 1 2
ldfjsldkfjodlkfjwefjs-dlfjweo--d--fds-dlfjo--pl-djf9-00-1-2
2 2 2
i--j-j-i-l-l-k-l-djflks-dklfjds-djfidj-k-i-i--i---j-k-0-9-0-4
bs-w1234-94-saa
3 4 2
aa-ai-ja-cd-g
1 2 1
----
2 3 2
--aldjld-dkljfds-k-z
3 2 1
-ab-d-a--
1 3 2
a-d-z--l-l-8-0
2 1 1
sldfjlskdjf--dlfjsd-jabddljfdla-d-fldfj9-0-9dlsfldjflj
1 1 2
ldfjsldkfjodlkfjwefjs-dlfjweo--d--fds-dlfjo--pl-djf9-00-1-2
2 2 2
i--j-j-i-l-l-k-l-djflks-dklfjds-djfidj-k-i-i--i---j-k-0-9-0-4
输出:
bsttuuvvw12345566778894-saa
aa-aija****cd********g
----
--aldjld-dkljfds-kYYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNMMMLLLz
-ab**d-a--
acccbbbdyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhgggfffeeez--l-l-8-0
sldfjlskdjf--dlfjsdEFGHIjabddljfdlaBCdEfldfj9-0123456789dlsfldjflj
ldfjsldkfjodlkfjwefjs-dlfjweo--d--fds-dlfjo--pl-djf9-0012
i--j-j-iKKJJl-l-kl-djflks-dklfjds-djfidjk-i-i--i---jk-088776655443322119-03322114
aa-aija****cd********g
----
--aldjld-dkljfds-kYYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNMMMLLLz
-ab**d-a--
acccbbbdyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhgggfffeeez--l-l-8-0
sldfjlskdjf--dlfjsdEFGHIjabddljfdlaBCdEfldfj9-0123456789dlsfldjflj
ldfjsldkfjodlkfjwefjs-dlfjweo--d--fds-dlfjo--pl-djf9-0012
i--j-j-iKKJJl-l-kl-djflks-dklfjds-djfidjk-i-i--i---jk-088776655443322119-03322114
#include<iostream> #include<string> using namespace std; bool IsSmallLetter(char c){ if(c>='a' && c<='z') return 1; return 0; } bool IsNumber(char c){ if(c>='0' && c<='9') return 1; return 0; } string StringStructure(char c,int a1,int a2){ string result=""; int i; switch(a1){ case 1: for(i=0;i<a2;i++) result+=c; break; case 2: for(i=0;i<a2;i++) if(IsNumber(c)) result+=c; else result+=(c-32); break; case 3: for(i=0;i<a2;i++) result+="*"; } //cout<<"已构造字符为"<<c<<"的字符串,构造的字符串为"<<result<<endl; return result; } string StringInversion(string s){ int len=s.length(); string result=""; while(len--){ result+=s[len]; } //cout<<"倒置的字符串为"<<result<<endl; return result; } int main(){ string str,temp; int a1,a2,a3,FindPlace; char FrontChar,BehindChar,i; while(cin>>a1>>a2>>a3){ cin>>str; FindPlace=0; while((FindPlace=str.find("-",FindPlace))!=-1){ FrontChar=str[FindPlace-1]; BehindChar=str[FindPlace+1]; //cout<<"在"<<FindPlace<<"找到字符-,前一个字符和后一个字符为"<<FrontChar<<" "<<BehindChar<<endl; if(((IsSmallLetter(FrontChar) && IsSmallLetter(BehindChar))|| (IsNumber(FrontChar) && IsNumber(BehindChar))) && FrontChar<BehindChar){ str.erase(FindPlace,1); //cout<<"已删除序号为"<<FindPlace<<"的字符\n"; temp=""; for(i=FrontChar+1;i<BehindChar;i++){ temp+=StringStructure(i,a1,a2); } if(a3==1) str.insert(FindPlace,temp); else str.insert(FindPlace,StringInversion(temp)); FindPlace+=temp.length()-1; } FindPlace++; } cout<<str<<endl; } return 0; }
0 0
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 在plsql中修改表的属性名
- Codeforces Round #225 (Div. 2)A. Coder
- geometry_msgs/PoseWithCovarianceStamped.msg
- 禁止拷贝网页内容 方法 代码
- jquery ajax 三级联动
- 字符串
- Android 4.0 源码目录
- HG255D[OpenWrt]刷机
- javaSE-常用类-Calendar
- LBS营销
- findViewById()与Inflate()和setContentView()关系扯谈
- UISearchBar控件
- 类型的本质和函数式实现
- 用JS实现图片连续自动切换