要求:
1、对输入的字符串进行加解密,并输出。
2、加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
3、解密方法为加密的逆过程。
js实现:
const str1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
const str2 = 'BCDEFGHIJKLMNOPQRSTUVWXYZAbcdefghijklmnopqrstuvwxyza2345678901';
while(line = readline()){
//加密
let result = '';
for(let i = 0;i<line.length;i++){
let index=str1.indexOf(line[i]);
if(index!==-1){//line[i]在str1里找得到
result += str2[index];
}else{//line[i]在str1里找不到
result+=line[i];
}
}
console.log(result);
line = readline();
//解密
result = '';
for(let j = 0;j<line.length;j++){
let index=str2.indexOf(line[j]);
if(index!==-1){//line[j]在str2里找得到
result += str1[index];
}else{//line[j]在str2里找不到
result+=line[j];
}
}
console.log(result);
}
要求:
将输入的两个字符串合并。
对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。
对排序后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符。如字符为‘4’,为0100b,则翻转后为0010b,也就是2。转换后的字符为‘2’; 如字符为‘7’,为0111b,则翻转后为1110b,也就是e。转换后的字符为大写‘E’。
举例:输入str1为"dec",str2为"fab",合并为“decfab”,分别对“dca”和“efb”进行排序,排序后为“abcedf”,转换后为“5D37BF”
实现:
while( s=readline()){
//将输入字符串先以空格切分为数组,再连接为整个字符串
let startS=s.split(' ').join('');
//A:偶数位数组
//B: 奇数位数组
let A=[],B=[];
for(let k=0;k<startS.length;k++){
if(k%2==0){
A.push(startS[k]);
}else{
B.push(startS[k]);
}
}
A.sort();
B.sort();
//合并数组
var merge = [];
for(let i=0;i<startS.length;i++){
if(i%2==0){
merge.push(A.shift());
}else{
merge.push(B.shift());
}
}
//dec1:要匹配的字符
//dec2:按照规则,要匹配的字符 转化的 字符
const dec1="0123456789abcdefABCDEF";
const dec2="084C2A6E195D3B7F5D3B7F";
let newArr=[];
for(let i=0;i<merge.length;i++){
if(/[0-9A-Fa-f]/.test(merge[i])){//可以匹配的字符
let index=dec1.indexOf(merge[i]);
newArr.push(dec2[index]);
}else{//不能匹配的字符
newArr.push(merge[i]);
}
}
console.log(newArr.join(''));
}