1. 程式人生 > >Java練習 SDUT-2787_加密術

Java練習 SDUT-2787_加密術

加密術

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

加密技術是一種常用的安全保密手段,利用加密技術可以把重要的資料變成經過加密變成亂碼傳送,到達目的地後再利用解密手段還原。現在我們發明了一種新的加密技術,即通過在一個字串的任意位置插入若干個隨機生成的字元(‘a’~’z’或’A’~’Z’)對該字串加密。
我們想要申請專利,但在這之前,需要做大量的檢測。所以有必要編寫一個程式判斷加密後的字串經過解密是否是加密前的字串,即從加密後的字串中刪除若干個字元後剩下的字串是否可以拼接成加密前的字串。Can you help us ?

Input

輸入包含多組,每組輸入兩個串(只包含大小寫字母)S,T,中間用空格分開。S和T的長度不超過100000。

Output

對於每組輸入,如果加密後的字串解密後與加密前的字串相同輸出“Yes”,否則輸出“No”。

Sample Input

string Strstring
HELLO sdhfHqEiweqLbnLOqwerty
nomatter nsomatstr
friend FriEendly

Sample Output

Yes
Yes
No
No

import java.util.*;

public class Main {
    public static void main(String[] args)
    {
        Scanner cin = new Scanner(System.in);
        node a;
        while(cin.hasNext())
        {
            a = new node(cin.next(),cin.next());
            if(a.judge()==1)
                System.out.println("Yes");
            else
                System.out.println("No");
        }
        cin.close();
    }
}

class node
{
    String a,b;
    node(String a,String b)
    {
        this.a = a;
        this.b = b;
    }
    int judge()
    {
        int i,j,f = 1,num = 0;
        j = 0;
        for(i=0;i<a.length()&&f==1;i++)
        {
            if(j==b.length())
                break;
            for(;j<b.length();j++)
            {
                if(a.charAt(i)==b.charAt(j))
                {
                    j++;
                    num ++;
                    break;
                }
            }
        }
        if(num!=a.length())
            f = 0;
        return f;
    }
}