Java Plagiarism Check
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Solution {
    public static boolean plagiarismCheck(String[] code1, String[] code2) {
        String c1 = String.join(" ", code1);
        String c2 = String.join(" ", code2);
        if (c1.equals(c2)) {
            return false;
        }

        List<String> d1 = new ArrayList<>();
        List<String> d2 = new ArrayList<>();
        Matcher m1 = Pattern.compile("\\w+").matcher(c1);
        while (m1.find()) {
            d1.add(m1.group());
        }
        Matcher m2 = Pattern.compile("\\w+").matcher(c2);
        while (m2.find()) {
            d2.add(m2.group());
        }

        Map<String, String> rCand = new LinkedHashMap<>();
        for (int k = 0; k < d1.size(); k++) {
            String v = d1.get(k);
            if (!v.equals(d2.get(k)) && !v.matches("\\d+")) {
                rCand.put(v, d2.get(k));
            }
        }

        for (Map.Entry<String, String> e : rCand.entrySet()) {
            String orig = e.getKey();
            c1 = c1.replaceAll("(\\W)" + orig + "(\\W*)", "$1PLACEHOLDER" + orig + "$2");
            c1 = c1.replaceAll("(\\W)" + orig, "$1PLACEHOLDER" + orig);
        }

        for (Map.Entry<String, String> e : rCand.entrySet()) {
            String orig = e.getKey();
            String repl = e.getValue();
            c1 = c1.replaceAll("(\\W)PLACEHOLDER" + orig + "(\\W)", "$1" + repl + "$2");
            c1 = c1.replaceAll("(\\W)PLACEHOLDER" + orig, "$1" + repl);
        }

        return c1.equals(c2);
    }
}

This flattens both snippets, tries consistent identifier replacements, and checks whether the rewritten code matches.