华为OJ:字符串加解密
题目描述
1、对输入的字符串进行加解密,并输出。
2加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
3、解密方法为加密的逆过程。
接口描述:
实现接口,每个接口实现1个基本操作:
void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出
说明:
1、字符串以\0结尾。
2、字符串最长100个字符。
int unEncrypt (char result[], char password[]):在该函数中实现字符串解密并输出
说明:
1、字符串以\0结尾。
2、字符串最长100个字符。
输入描述:
输入说明
输入一串要加密的密码
输入一串加过密的密码
输出描述:
输出说明
输出加密后的字符
输出解密后的字符
输入例子:
abcdefg
BCDEFGH
出例子:
BCDEFGH
abcdefg
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
char[] enc = in.nextLine().toCharArray();
char[] unEnc = in.nextLine().toCharArray();
Encrypt(enc);
System.out.println(charsToStr(enc));
unEncrypt(unEnc);
System.out.println(charsToStr(unEnc));
}
}
private static void unEncrypt(char[] chars){
for(int i=0;i<chars.length ;i++){
if(isDigits(chars[i])){
if(chars[i] == '0'){
chars[i] = '9';
}else{
chars[i] = (char) (chars[i] - 1);
}
}else if(isUpperCase(chars[i])){
if(chars[i] == 'A')
chars[i] = 'z';
else
chars[i] = (char) (chars[i] - 'A' + 'a' -1);
}else if(isLowCase(chars[i])){
if(chars[i] == 'a')
chars[i] = 'Z';
else
chars[i] = (char) (chars[i] - 'a' + 'A' -1 );
} }
} private static void Encrypt(char[] str){
for(int i=0;i<str.length ;i++){
if(isDigits(str[i])){
if(str[i] == '9'){
str[i] = '0';
}else{
str[i] = (char) (str[i] + 1);
}
}else if(isUpperCase(str[i])){
if(str[i] == 'Z')
str[i] = 'a';
else
str[i] = (char) (str[i] - 'A' + 'a' +1);
}else if(isLowCase(str[i])){
if(str[i] == 'z')
str[i] = 'A';
else
str[i] = (char) (str[i] - 'a' + 'A' +1 );
} }
}
private static String charsToStr(char[] chars){
StringBuffer sb = new StringBuffer();
for(char ch:chars){
sb.append(ch);
}
return sb.toString();
} private static boolean isDigits(char ch){
if(ch >= '0' && ch<='9')
return true;
return false;
}
private static boolean isUpperCase(char ch){
if(ch>='A' && ch<='Z')
return true;
return false;
}
private static boolean isLowCase(char ch){
return ch>='a' && ch<='z';
}
private static boolean isWord(char ch){
return isUpperCase(ch) || isLowCase(ch);
}
}
华为OJ:字符串加解密的更多相关文章
- android中使用jni对字符串加解密实现分析
android中使用jni对字符串加解密实现分析 近期项目有个需求.就是要对用户的敏感信息进行加密处理,比方用户的账户password,手机号等私密信息.在java中,就对字符串的加解密我们能够使用A ...
- iOS - (base64对字符串加解密)
今天公司让做支付系统,为了安全起见,需要对一些数据进行加密,然而我首想到的就是 base64 ,严格来说这不是一种加密方式,这只是将原有的一些字符串或者其它的一些文本进行一个转化而已,就是转化成数字, ...
- iOS开发:用DES对字符串加解密
参考http://www.cnblogs.com/janken/archive/2012/04/05/2432930.html,做了个小修改,实现PHP,JAVA,Objective-c加解密结果相同 ...
- C#常用字符串加解密方法封装
C#中常用的字符串加密.解密方法封装,包含只加密但不解密的方法.收藏起来备用. //方法一 //须添加对System.Web的引用 //using System.Web.Security; /// & ...
- C++ 简单字符串加解密(转载)
#include <iostream.h> #include <windows.h> #include <tchar.h> void EncodeString(LP ...
- 华为OJ—字符串排序(排序,忽略指定字符排序)
http://career-oj.huawei.com/exam/ShowProblemInfo?id=2168 编写一个程序,将输入字符串中的字符按如下规则排序. 规则1:英文字母从A到Z排列,不区 ...
- 基于Crypto++的aes 字符串加解密实现
esaes.h: #ifndef ESAES_H #define ESAES_H #include <cryptopp/aes.h> #include <iostream> # ...
- 华为oj 字符串最后一个单词的长度
<img alt="http://img.bbs.csdn.net/upload/201508/06/1438867109_670158.jpg" src="htt ...
- 华为OJ:字符串反转
非常easy,逆向输出就好了. import java.util.Scanner; public class convertString { public static void main(Strin ...
随机推荐
- Object-c 语法 - NSObject常用方法和反射
NSObject常用方法 - (BOOL)isKindOfClass:(Class)aClass //判断是否为aClass或者aClass的子类的实例,aClass可以通过[类名 class]获取 ...
- iis7应用程序池自动关闭问题解决
解决: 应用程序池启动32位应用程序 设置托管管道为集成 (仍然有问题) 图片:123.png 访问网站之前 应用程序池是开启的 访问后 网页报503 service unavailable应用程序池 ...
- Linux系统木马后门查杀方法详解
木马和后门的查杀是系统管理员一项长期需要坚持的工作,切不可掉以轻心.以下从几个方面在说明Linux系统环境安排配置防范和木马后门查杀的方法: 一.Web Server(以Nginx为例) 1.为防止跨 ...
- 数据类型 swift
1整形 Int,Int8,Int16,Int32,Int64 UInt,UInt8,UInt16,UInt32,UInt64 其中Int,UInt始终和当前平台的原生字长相同(32位机,64位机) 查 ...
- Photoshop/PS中如何写维吾尔语等语言 乱码
在新疆的朋友都了解很多标语上面都会有汉语.维语等两种语言.有很多维吾尔语.哈萨克语.柯尔克孜语等语言 要在PS 里进行设计处理,这时在Photoshop中进行设计时文字粘贴进来后出现不正常是乱码形式. ...
- mysql安装/启动报错汇总
2016/9/6补充 初始化报错: # /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysq ...
- “我爱淘”冲刺阶段Scrum站立会议8
完成任务: 今天最大的成功就是解决了昨天的问题,可以将xml文件的内容解析出来显示到软件中. 计划任务: 可以通过webservice将数据库中的内容解析出来,通过查询可以得到想要的内容. 遇到问题: ...
- JBOSS和WebLogic区别
JBoss: 1. JBoss开放源代码Java EE实现,成本低,好控制. 2. JBoss需要的内存和硬盘空间比较小,但是只适合做小项目. 3. 安装非常简单.先解压缩JBoss打包文件再配 ...
- Bootstrap入门二:响应式页面布局
Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列.它包含了易于使用的预定义类,还有强大的mixin 用于生成更具 ...
- 2. ProGit-Git基础
(1) 取得项目的Git仓库 从工作目录中初始化新仓库 git init 从现有仓库克隆 git clone ssh协议 http协议 (2) 检查当前文件状态 git status (3) ...