SRM 397 DIV 2 [250]

#include < iostream >
#include
< string >
#include
< map >
using   namespace  std;

class  BreakingTheCode
{
public:
    
string decodingEncoding(string code,string message)
    
{
        
string res;
        
string aa[]={"01","02","03","04","05","06","07","08","09","10","11","12","13","14",
                    
"15","16","17","18","19","20","21","22","23","24","25","26"}
;
        map
<string,char> a;
        map
<char,string> b;
        
for (int i=0;i<26;++i){
            a[aa[i]]
=code[i];
            b[code[i]]
=aa[i];
        }

        
if (message[0]>='0'&& message[0]<='2'){
            
for (int i=0;i!=message.size();i+=2)
                res
+=a[message.substr(i,2)];
        }

        
else
            
for (int i=0;i!=message.size();++i)
                res
+=b[message[i]];
        
return res;
    }

}
;
 

Problem Statement

    

You have been given a secret mission where you must break the enemy's code. You have already figured out that they encode messages using the following method. Each letter between 'a' and 'z', inclusive, is assigned a distinct two-digit number between 01 and 26, inclusive. A message is encoded by simply replacing each letter with its assigned number. For example, if 't' is assigned 20, 'e' is assigned 05 and 's' is assigned 19, then the message "test" is encoded as "20051920". All original messages contain only lowercase letters.


You are given a string code containing the assignment of numbers to letters. The first letter of code is assigned 01, the second is assigned 02 and so on. You are also given a string message which is either an original unencoded message or an encoded message. If you are given an unencoded message, return the encoded version of that message, and if you are given an encoded message, return the original unencoded message.

Definition

    
Class: BreakingTheCode
Method: decodingEncoding
Parameters: string, string
Returns: string
Method signature: string decodingEncoding(string code, string message)
(be sure your method is public)
    
 

Constraints

- code will contain exactly 26 characters.
- Each lowercase letter between 'a' and 'z', inclusive, will occur exactly once in code.
- message will contain between 1 and 50 characters, inclusive.
- message will either contain only lowercase letters ('a'-'z') or only digits ('0'-'9').
- If message contains only digits, it will be a concatenation of two-digit numbers, each between 01 and 26, inclusive.

Examples

0)  
    
"abcdefghijklmnopqrstuvwxyz"
"test"
Returns: "20051920"
Example from the problem statement. Here, the letters are coded in an alphabetical order.
1)  
    
"abcdefghijklmnopqrstuvwxyz"
"20051920"
Returns: "test"
Now, we're decoding it.
2)  
    
"qesdfvujrockgpthzymbnxawli"
"mwiizkelza"
Returns: "19242626171202251723"
 
3)  
    
"faxmswrpnqdbygcthuvkojizle"
"02170308060416192402"
Returns: "ahxpwmtvza"
 

This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值