博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串还原
阅读量:6227 次
发布时间:2019-06-21

本文共 1648 字,大约阅读时间需要 5 分钟。

hot3.png

一、描述

        一个长度为n的由小写字母组成的字符串s_1~s_2~\cdots~s_n~s1​ s2​ ⋯ sn​ 按如下方式加密成3种形式:

  1. 将字符串翻转,即对于每一个1\le i\le n~1≤i≤n 来说,s_i~si​ 与s_{n-i+1}~sn−i+1​ 对换。
  2. 将字符串中每个字母变为其之后第k个字母,定义z之后的字母为a,其中0≤k≤6且为未知数。
  3. 将字符串中每个字母变为其之前第k个字母,定义a之前的字母为z,k同2所述。

       例如字符串abcd按上面3种方式加密后,在k=1k=1的情况下会依次变为:

  1. dcba
  2. bcde
  3. zabc

    现给出信中按以上3种形式分别加密后的3个字符串(不一定按上述例子的顺序),要求还原原来的字符串。

二、格式

  • 输入格式
    输入的第1行为一个整数n,表示这个字符串的长度。下面3行每行1个长度为n的字符串,且保证符合题目要求。
  • 输出格式
    输出仅包括1行,为还原后的字符串。

三、思路

        将其中一个字符串看成是经过翻转后的,则该字符串的首字母分别与其他两个字符串的首字母的差(对应的ASCII码值)的绝对值 X ,Y应该相等,并且等于k,所以只要判断X和Y是否相等即可。考虑到字母a向前一个字母是z,X 或 Y 的值有可能大于6(k的取值范围是0-6),注意到26个字母形成了一个类似循环队列的结构,所以任意两个字母之间的差的绝对值都应该小于26/2=13,所以最终得到X或Y的值应该是 X= (X>13)?(26-X):X 、Y=(Y>13)?(26-Y):Y。

四、代码

import java.util.Scanner;public class Main {	public static int n=0;	public static void main(String[] args) {		// TODO Auto-generated method stub		Scanner sc = new Scanner(System.in);		n = sc.nextInt();		String str1 = sc.next();		String str2 = sc.next();		String str3 = sc.next();		if(getStr(str1,str2,str3)){			System.out.println(strReverse(str1));		}		if(getStr(str2,str1,str3)){			System.out.println(strReverse(str2));		}		if(getStr(str3,str1,str2)){			System.out.println(strReverse(str3));		}	}	public static String strReverse(String str){		String result ="";		for(int i =str.length()-1;i>=0;i--){			result += str.charAt(i);		}		return result;	} 	public static boolean getStr(String str1,String str2,String str3){		boolean flag = true;		String str = strReverse(str1);		for(int i = 0;i
13?(26-m):m; int n = Math.abs((str3.charAt(0)-str.charAt(0))); n = n>13?(26-n):n; if(m!=n){ flag=false; break; } } return flag; }}

 

转载于:https://my.oschina.net/worriedfox/blog/1551361

你可能感兴趣的文章
FreeRTOS 特性简介
查看>>
Linux--前后端分离部署
查看>>
java阶段学习目标
查看>>
Azure IoT 技术研究系列2
查看>>
day24-3-2子类继承构造方法
查看>>
我们一起学习WCF 第五篇数据协定和消息协定
查看>>
Linux 与 Windows 文件互传(VMWare)
查看>>
Python学习笔记八 面向对象高级编程(一)
查看>>
Oracle内置函数
查看>>
UVA 1645 Count
查看>>
贪吃蛇程序
查看>>
poj 1419 Graph Coloring
查看>>
node的安装及其运用及相关配置
查看>>
第19篇 2016年计划
查看>>
左连接,右连接,内连接
查看>>
Django+element ui前后端不分离的博客程序
查看>>
托福听力
查看>>
2018-2019-1 20165302 《信息安全系统设计基础》第四周学习总结
查看>>
类似百度图片排版效果
查看>>
【学习笔记】DataTable根据多列分组
查看>>