题解 | #字符串加密#
字符串加密
https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
#include <stdio.h>
#include<string.h>
/*
首先,选择一个单词作为密匙,
如果单词中包含有重复的字母,只保留第1个,
将所得结果作为新字母表开头,并将新建立的字母表中未出现的字母按照正常字母表顺序加入新字母表。
*/
char flag[26] = {0}; //加密数组(26字母)
int flagSize = 0;
//
//检查target字符是否已存在数组中
int check(char target) {
for (int i = 0; i < flagSize; i++) {
if (flag[i] == target)
return 1;
}
return 0;
}
int main() {
char str[101] = {0}; //key字符串
char ret[101] = {0}; //要加密的字符串
scanf("%s", str);
scanf("%s", ret);
int len = strlen(str);
int len2 = strlen(ret);
//遍历,未出现的字符按顺序放入加密数组,第一次先全部存入加密数组
for (int i = 0; i < len; i++) {
if (!check(str[i])) {
flag[flagSize++] = str[i];
}
}
//题目只要小写字母,遍历a-z未出现的字符按顺序放入加密数组的后面
for (char i = 'a'; i <= 'z'; i++) {
if (!check(i)) {
flag[flagSize++] = i;
}
}
for (int i = 0; i < len2; i++) {
printf("%c", flag[ret[i] -'a']); //加密的字母与第一个的长度距离就是加密数组的下标对应 输出
}
return 0;
}
C语言刷题 文章被收录于专栏
自己从头开始刷的C语言
查看17道真题和解析
海康威视公司福利 1154人发布