2013
11-10

# All in All

You have devised a new encryption technique which encodes a message by inserting between its characters randomly generated strings in a clever way. Because of pending patent issues we will not discuss in detail how the strings are generated and inserted into the original message. To validate your method, however, it is necessary to write a program that checks if the message is really encoded in the final string.

Given two strings s and t, you have to decide whether s is a subsequence of t, i.e. if you can remove characters from t such that the concatenation of the remaining characters is s.

The input contains several testcases. Each is specified by two strings s, t of alphanumeric ASCII characters separated by whitespace.The length of s and t will no more than 100000.

For each test case output “Yes”, if s is a subsequence of t,otherwise output “No”.

sequence subsequence
person compression
VERDI vivaVittorioEmanueleReDiItalia
caseDoesMatter CaseDoesMatter


Yes
No
Yes
No


import java.util.*;

public class Main {

public static void main(String[] args) {
Scanner cin = new Scanner(System.in);

String[] str = new String[2];
String a, b;
boolean result;

while(cin.hasNext())
{
str = cin.nextLine().split(" ");
a = str[0];
b = str[1];

result = findit(a, b);
if(result == true)
System.out.println("Yes");
else
System.out.println("No");
}
}

private static boolean findit(String lstr, String rstr)
{
char[] stra = lstr.toCharArray();
char[] strb = rstr.toCharArray();

int cura = 0;
char curb = '\n';

for(int j = 0; j < strb.length; j++)
{
curb = strb[j];
if(curb != stra[cura])
continue;
else
{
if(cura == stra.length-1)
return true;
else
cura ++;
}
}
return false;
}
}

1. 第23行：
hash = -1是否应该改成hash[s ] = -1

因为是要把从字符串s的start位到当前位在hash中重置

修改提交后能accept，但是不修改居然也能accept