标签:在线 大写 i++ har cin 进入 翻译 names class
题意翻译:定义一种字符串加密方法,将连续的\(k\)个大写字母\(C\)加密为\(Ck\)。如:\(AABBBBDAA\)加密为\(A2B4D1A2\)。现输入加密后字符串,对字符串解密。
加密方式很简单,大概也有思路,只需循环读入字符串,对每个加密单元进行解密并存入新字串即可。
具体的实现可以采用在线处理,由于字串合法,两个字母不会相连,故读到字母即将其记录,并进入一个新的循环,将该字母后的数字全部读完再统计数目,随后将该字母存入新字串。
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
for(int i=1;i<=t;i++)
{
string st;
char a[500];
cin>>st;
int l=st.size(),num=0;
for(int j=0;j<l;j++)
if(st[j]>='A'&&st[j]<='Z')
{
int last=0;
for(int k=j+1;k<l;k++)
{
if(st[k]<'0'||st[k]>'9')
break;
last=last*10+int(st[k])-48;
}
for(int k=1;k<=last;k++)
a[++num]=st[j];
}
printf("Case %d: ",i);
for(int j=1;j<=num;j++)
cout<<a[j];
cout<<endl;
}
return 0;
}
标签:在线 大写 i++ har cin 进入 翻译 names class
原文地址:https://www.cnblogs.com/s-t-a-r-d-u-s-t/p/11436817.html