华为oj 字符串加密

原创 2015年11月20日 11:29:20
#include <iostream>
#include <string.h>
#include <map>
#define N 101
using namespace std;
std::map<char,int> character;
map<char,char> keydata;

void encrypt(char *key,char *data,char *en)
{
	character['a'] = 0;character['b'] = 0;character['c'] = 0;character['d'] = 0;character['e'] = 0;character['f'] = 0;character['g'] = 0;
    character['h'] = 0;character['i'] = 0;character['j'] = 0;character['k'] = 0;character['l'] = 0;character['m'] = 0;character['n'] = 0;
    character['o'] = 0;character['p'] = 0;character['q'] = 0;character['r'] = 0;character['s'] = 0;character['t'] = 0;character['u'] = 0;
    character['v'] = 0;character['w'] = 0;character['x'] = 0;character['y'] = 0;character['z'] = 0;
	map<char,int>::iterator iter = character.begin();
	while((*key) != '\0')
	{
		*key = tolower(*key);
		if(character[*key] == 0)
		{
			keydata[iter->first] = *key;
			character[*key] = 1;
			++iter;
			++key; 
		}
		else
		{
			++key;
		}
	}
	map<char,int>::iterator other = character.begin();
	for(;other != character.end();++other)
	{
		if(iter != character.end())
		{
		    if(other->second != 1)
			{
				keydata[iter->first] = other->first;
				++iter;
			} 
		} 
		
	}

    while((*data)!= '\0')
    {
	    if(isupper(*data))
		{
		   *en = toupper(keydata[tolower(*data)]); 
	       cout<<*en;
	    }
	    else
	    {
	    	*en = keydata[*data]; 
	        cout<<*en;
	    }
	    ++en,++data;
	} 
} 
int main()
{
    char key[N],data[N],en[N];
	while(cin>>key)
	{
	    cin>>data;
        encrypt(key,data,en);
        cout<<endl;
    }
	return 0;
} 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

华为OJ:字符串加密

华为OJ:字符串加密      加密规则:输入密匙key和明文(需要加密的字符串);例如:密匙为TRAILBLAZERS;     (1)对密匙去重(注:若出现大小写的重复,也要去重,目的是为了保...

华为OJ——字符串加密

题目描述        有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,...

华为OJ题目(七):字符串加密

#include #include using namespace std; #define M 100 int main() { char key[M], data[M], encrypt[M];...

[华为OJ--C++]026-字符串加密

题目描述: 有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,其...

【华为OJ】【026-字符串加密】

【华为OJ】【算法总篇章】【华为OJ】【026-字符串加密】【工程下载】题目描述有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理: 首先,选择一个单词作为密匙,如TRAIL...

华为oj_字符串加密

#include #include #include #include #define M 100 using namespace std; int s[26]; int i,j,k,len...

华为OJ——字符串加密

题目描述 有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,其余...

华为OJ-字符串加密

题目描述 1、对输入的字符串进行加解密,并输出。 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a; 当内容是数字...

华为oj,字符串加密

#include #include void Encrypt(char *key, char *data, char *encrypt); int main() { char key[100]; ...

华为OJ基础篇-字符串加密

有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,其余几个丢弃。现在,修改...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)