加密术

来源:互联网 发布:什么变声软件好用 编辑:程序博客网 时间:2024/05/01 08:19

加密术

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic

Problem Description

加密技术是一种常用的安全保密手段,利用加密技术可以把重要的数据变成经过加密变成乱码传送,到达目的地后再利用解密手段还原。现在我们发明了一种新的加密技术,即通过在一个字符串的任意位置插入若干个随机生成的字符(‘a’~’z’或’A’~’Z’)对该字符串加密。
我们想要申请专利,但在这之前,需要做大量的检测。所以有必要编写一个程序判断加密后的字符串经过解密是否是加密前的字符串,即从加密后的字符串中删除若干个字符后剩下的字符串是否可以拼接成加密前的字符串。Can you help us ?

Input

输入包含多组,每组输入两个串(只包含大小写字母)S,T,中间用空格分开。S和T的长度不超过100000。

Output

对于每组输入,如果加密后的字符串解密后与加密前的字符串相同输出“Yes”,否则输出“No”。

Example Input

string  StrstringHELLO  sdhfHqEiweqLbnLOqwertynomatter  nsomatstrfriend  FriEendly

Example Output

YesYesNoNo
  
//字符串import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {String S = sc.next();// 取得原始字符串String T = sc.next();// 取得准加密字符串char[] chars = S.toCharArray();// 原始串中的字符boolean flags[] = new boolean[chars.length];// 记录原始串中每个字符是否存在boolean flag = true;// 全局控制变量int j = 0;// 准加密字符串指针for (int i = 0; i < chars.length; i++) {// 对于原始字符串的每个字符,在准加密的字符串中顺序查找while (j < T.length()) {char ch = T.charAt(j);// 若原字符串中字符与准加密串字符相同,字符找到,准加密串指针向后推进1个字符if (chars[i] ==ch) {flags[i] = true;break;}// 判断的两字符不同,准加密的字符串是否为字母,若不全为字母。局部控制变量失败,程序结束;否则,判断准加密串的下一个字符if (!(ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z')) {flag = false;break;}j++;}// 若已经判断有确定的结果,则结束判断if (!flag) {break;}// 若加密串结束,原始串未结束,则结束,且有确定的比较结果if (i != chars.length - 1 && j == T.length()) {flag = false;break;}}// 根据原始串中每个字符是否找到 和 全局变量决定是否成功for (int i = 0; i < flags.length; i++) {flag = flag && flags[i];}if (flag) {System.out.println("Yes");} else {System.out.println("No");}}sc.close();}}  


0 0