赞
踩
C++、Java、python、JS代码:
【华为OD】C卷真题 100分:密码解密 C/C++代码实现[思路+代码]-CSDN博客
【华为OD】C卷真题 100分:密码解密 Java代码实现[思路+代码]-CSDN博客
【华为OD】C卷真题 100分:密码解密 Python代码实现[思路+代码]-CSDN博客
【华为OD】C卷真题 100分:密码解密 JavaScript代码实现[思路+代码]-CSDN博客
给定一段“密文”字符串 s,其中字符都是经过“密码本”映射的,现需要将“密文”解密并输出。
映射的规则('a' ~ 'i')分别用('1' ~ '9')表示;('j' ~ 'z')分别用("10*" ~ "26*")表示。
约束:映射始终唯一。
“密文”字符串
明文字符串
翻译后的文本长度在100以内
输入
20*19*20*
输出
tst
输入
12345610*
输出
abcdefj
879
+---+
3 | | ++ + +---|
| | | 3 + 6 + | + | +
| + | | + + + | + | +
| + | +---+ + + +++++ + + + | +
| + | + | + +----+ | | + + + | +
| + 3 | + | + + + 2 | | 2 + + + | +
| + | + | + + + | | + + + | +
| +---+ + | | | + ----+ | +---+ | | + | +
| | + | | | + | | | | | | + | +
| 1 | + | 8 | | + 1 | | | 1 | | 1 | | + | +
| | + | | | + | | | | | | | + | +
| +---+ + +---+ | ++---+ ++ +---+ +---+ | + | +
| | + | | | ++ | | |+ | +
|0 | + | 0 | 0 | ++ | 0 | |+ | +
| | + | | | ++ | | |+ | +
+---+ + +-------+ +---+| +|+ | +
+ + | +
0 1 2 3 4 5 6 7 8 9 10 11 12 + v: w u m u 1 0 2 4
按映射来进行字符串替换即可,优先判断2位数的情况,再判断一位数即可
- #include <stdio.h>
- #include <string.h>
-
- void codeDecrypt(const char* str) {
- char ans[100] = {0};
- int index = 0;
- int i=0;
- while (index < strlen(str)) {
- if (index + 2 < strlen(str) && str[index + 2] == '*') {
- char temp[3];
- strncpy(temp, &str[index], 2);
- temp[2] = '\0';
- ans[i++]= (atoi(temp) + 'a' - 1);
- index += 3;
- } else {
- char temp[2];
- strncpy(temp, &str[index], 1);
- temp[1] = '\0';
- ans[i++]= (atoi(temp) + 'a' - 1);
- index += 1;
- }
- }
- printf("%s\n", ans);
- }
-
- int main() {
- char cipherText[100];
- scanf("%s", cipherText);
- codeDecrypt(cipherText);
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。