Home

Append And Delete

Detailed explanation coming soon!

import java.util.*;

public class Solution {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String s = in.next();
        String t = in.next();
        int k = in.nextInt();

        System.out.println(canTransform(s, t, k) ? "Yes" : "No");
    }

    public static boolean canTransform(String s, String t, int k){
        if(k >= s.length() + t.length()){
            // Can always delete the string first then reconstruct it
            return true;
        }

        int divergeIndex = s.length();
        for(int i = 0; i < s.length(); i++){
            if((i >= t.length()) || (s.charAt(i) != t.charAt(i))){
                divergeIndex = i;
                break;
            }
        }

        int minOps = (s.length() - divergeIndex) + (t.length() - divergeIndex);
        if(k < minOps){
            return false;
        }

        return (((k - minOps) & 1) == 1) ? false : true;
    }
}


Questions? Have a neat solution? Comment below!