题解 UVa11541

题意翻译:定义一种字符串加密方法,将连续的\(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;
}

猜你喜欢

转载自www.cnblogs.com/s-t-a-r-d-u-s-t/p/11436817.html