题解 | #字符串加密#
字符串加密
http://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
#include <stdio.h>
#include <string.h>
#define MAX_STR_LEN 100
#define TAB_LEN 26
#define FLAG_OFFSET 'a'
int main(void)
{
char strKey[MAX_STR_LEN + 1] = {0};
char strData[MAX_STR_LEN + 1] = {0};
char keyTab[TAB_LEN] = {0};
char keyTabFlag[TAB_LEN] = {0};
int keyLen;
int dataLen;
int i;
int index = 0;
scanf("%s", strKey);
scanf("%s", strData);
keyLen = strlen(strKey);
dataLen = strlen(strData);
/* 把key存入新字母表 */
for (i = 0; i < keyLen; i++) {
if (keyTabFlag[strKey[i] - FLAG_OFFSET] == 0) {
keyTabFlag[strKey[i] - FLAG_OFFSET]++;
keyTab[index] = strKey[i];
index++;
}
}
/* 把剩余的字母存入新字母表 */
for (i = 0; i < TAB_LEN; i++) {
if (keyTabFlag[i] == 0) {
keyTab[index] = i + FLAG_OFFSET;
index++;
}
}
/* 生成加密后的字符串 */
for (i = 0; i < dataLen; i++) {
strData[i] = keyTab[strData[i] - FLAG_OFFSET];
}
printf("%s\n", strData);
return 0;
}
查看20道真题和解析