首页 > 编程语言 >牛客[编程题] HJ29 字符串加解密

牛客[编程题] HJ29 字符串加解密

时间:2023-11-09 13:23:42浏览次数:40  
标签:map HJ29 int 加解密 dic char 牛客 Add kv

HJ29 字符串加解密 中等  通过率:25.47%  时间限制:1秒  空间限制:32M  

描述

对输入的字符串进行加解密,并输出。

加密方法为:

当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;

当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;

其他字符不做变化。

解密方法为加密的逆过程。 数据范围:输入的两个字符串长度满足 1 \le n \le 1000 \1≤n≤1000  ,保证输入的字符串都是只由大小写字母或者数字组成

输入描述:

第一行输入一串要加密的密码
第二行输入一串加过密的密码

输出描述:

第一行输出加密后的字符
第二行输出解密后的字符

示例1

输入:
abcdefg
BCDEFGH
输出:
BCDEFGH
abcdefg

 

using System.Collections.Generic;
using System;

public class Program {
    public static void Main() {
        string line;
        string line1 = null;
        string line2 = null;
        while ((line = System.Console.ReadLine ()) !=
                null) { // 注意 while 处理多个 case
            if (line1 == null)
                line1 = line;
            else {
                line2 = line;
                var map = GetEncodeMap();
                string encode = "";
                string decode = "";
                for (int i = 0; i < line1.Length; i++) {
                    encode += Encode(line1[i], map).ToString();
                }
                for (int i = 0; i < line2.Length; i++) {
                    decode += Decode(line2[i], map).ToString();
                }
                Console.WriteLine(encode);
                Console.WriteLine(decode);
            }

        }
    }
    public static char Encode(char c, Dictionary<char, char> map) {
        foreach (var kv in map) {
            if (kv.Key == c)return kv.Value;
        }
        return c;
    }
    public static char Decode(char c, Dictionary<char, char> map) {
        foreach (var kv in map) {
            if (kv.Value == c)return kv.Key;
        }
        return c;
    }
    public static Dictionary<char, char> GetEncodeMap() {
        int dis = 'a' - 'A';
        Dictionary<char, char> dic = new  Dictionary<char, char> ();
        for (int i = 'A'; i < 'Z'; i++) {
            dic.Add((char)i, (char)(i + 1 + dis));
        }
        dic.Add('Z', 'a');
        for (int i = 'a'; i < 'z'; i++) {
            dic.Add((char)i, (char)(i + 1 - dis));
        }
        dic.Add('z', 'A');
        for (int i = '0'; i < '9'; i++) {
            dic.Add((char)i, (char)(i + 1));
        }
        dic.Add('9', '0');
        return dic;
    }
}

 

标签:map,HJ29,int,加解密,dic,char,牛客,Add,kv
From: https://www.cnblogs.com/zhangdezhang/p/17819503.html

相关文章

  • 牛客[编程题] HJ27 查找兄弟单词
    HJ27 查找兄弟单词  描述定义一个单词的“兄弟单词”为:交换该单词字母顺序(注:可以交换任意次),而不添加、删除、修改原有的字母就能生成的单词。兄弟单词要求和原来的单词不同。例如:ab和ba是兄弟单词。ab和ab则不是兄弟单词。现在给定你n个单词,另外再......
  • 牛客[编程题] HJ26 字符串排序
    HJ26 字符串排序  中等  通过率:39.52%  时间限制:1秒  空间限制:32M 描述编写一个程序,将输入字符串中的字符按如下规则排序。规则1:英文字母从A到Z排列,不区分大小写。如,输入:Type输出:epTy规则2:同一个英文字母的大小写同时存在时,按照输入......
  • 牛客[编程题] HJ25 数据分类处理
     描述信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出。  数据范围:1\leI,R\le100\1≤I,R≤100  ,输入的整数大小满足 0\lev......
  • 牛客[编程题]坐标移动
     https://www.nowcoder.com/questionTerminal/119bcca3befb405fbe58abe9c532eb29publicclassProgram{publicstaticvoidMain(){stringline;while((line=System.Console.ReadLine())!=null){//注意while处理多个casestr......
  • 牛客小白月赛80C/D又放学辣
    C这么小的数据范围,想必胡搞就可以了。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>usingnamespacestd;intn,m,k;structcll{intp;intid;}cl[105];intx;intans[205];boolcmp(cllx,clly){returnx.p......
  • 牛客练习赛117 C&D
    LinkC分类讨论贪心显然的,正面考虑怎么拼团会很麻烦,所以我们从另一个视角考虑,求出可能的最大团数,然后看一看怎么踢人能够使落单的最少。当K为偶数的时候,显然最大团数就是\((n+m*2)/k\),而当K为奇数的时候,显然男生抱团需要至少一个男生,女生抱团也需要至少一个男生,最大团数就是\(m......
  • 【牛客顺序结构 06】kiki学程序设计基础
    链接:https://ac.nowcoder.com/acm/contest/18839/1006来源:牛客网题目描述BoBo老师教了KiKi学习程序设计基础,他知道C++是带类的C语言,这个“++”主要包含三部分内容:对C语言进行语法上的扩展、面向对象(封装、继承和多态),STL(即模板)。这学期KiKi学习了C......
  • C#.NET 国密SM4 CBC 对称加解密 与JAVA互通 ver:20231103
    C#.NET国密SM4CBC对称加解密与JAVA互通ver:20231103 .NET环境:.NET6控制台程序(.netcore)。JAVA环境:JAVA8,带maven的JAVA控制台程序。 简要解析:1:加密的KEY、明文等输入参数都需要string转byte[],要约定好编码,如:UTF8。2:加密后的输出参数:byte[],在传输时需要转......
  • 2023牛客暑期多校训练营8 B Bloodline Counter 指数型生成函数 容斥 多项式求逆
    传送门容易想到求出竞赛图上最大环\(\lek\)的数量,再求出\(\lek-1\)的数量作差即可得到答案。设指数型生成函数\(G(x)\)表示大小为\(i\)的环的方案数。\(G(x)=\sum_{i=1}^k\frac{a_i}{i!}x^i\)那么最大环\(\lek\)的数量\(=[x^n]n!\sum_{i=1}^ki!\frac{(G(x))^i}{i!}\)这里......
  • kettle/ckettle进行参数对称加解密-AES为例
    ckettle/kettle字段加密对称加密机制方法调用链kettle-core-2.3.0.1-SNAPSHOT.jar:进行秘钥加密保护(不涉及实际业务处理) org.pentaho.di.core.encryption.Encr org.pentaho.di.core.encryption.TwoWayPasswordEncoderInterface 使用BigInteger进行或运算来进行秘钥加密解......