首页 > 专题系列 > Java解POJ > POJ 1936 All in All [解题报告] Java
2013
11-10

POJ 1936 All in All [解题报告] Java

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