Pola Kata

Jan 01 2023
Masalah Leetcode Hari Ini [ 01 Jan 2023 ]
Diberi pola dan string s, temukan apakah s mengikuti pola yang sama. Di sini ikuti berarti kecocokan penuh, sehingga ada bijeksi antara huruf dalam pola dan kata yang tidak kosong dalam s.

Diberikan a patterndan string s, temukan if smengikuti pola yang sama.

Di sini ikuti berarti kecocokan penuh, sehingga ada bijeksi antara huruf masuk patterndan kata tidak kosong di s.

Contoh 1:

Input: pattern = "abba", s = "dog cat cat dog"
Output: true

Input: pattern = "abba", s = "dog cat cat fish"
Output: false

Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false

Seperti yang kita tahu itu

"abba" -> "anjing kucing kucing anjing"

'a' -> "anjing"

'b' -> “kucing”

jika kami menemukan peta dengan string yang berbeda maka kami dapat mengatakan itu bukan kasus uji yang valid.

"abfa" -> "anjing kucing anjing anjing"

Kode Leet #290. Pola Kata

'a' -> "anjing"

'b' -> “kucing”

'f' -> "anjing"

tapi anjing itu sudah ditugaskan ke a. Jadi kami menggunakan dua peta satu akan melakukan pemetaan dengan -> anjing dan peta lain akan melakukan pemetaan dengan anjing -> a sehingga kita tahu anjing tersebut sudah dipetakan dengan karakter lain.

Mari kita mulai kodenya

class Solution {
    public boolean wordPattern(String pattern, String s) {
        String[] tokens = s.split(" ");
        
        if(pattern.length() != tokens.length) 
            return false;

        HashMap<String, Character> map = new HashMap<>();
        HashMap<Character, String> reverseMap = new HashMap<>();

        for(int i=0;i<tokens.length;i++) {
            String find = tokens[i];
            char pt = pattern.charAt(i);
            
            if(!map.containsKey(find))
                map.put(find, pt);
            if(!reverseMap.containsKey(pt))
                reverseMap.put(pt, find);

            char mapPt = map.get(find);
            String mapStr = reverseMap.get(pt);
            
            if(mapPt != pt)
                return false;
            if(!mapStr.equals(find))
                return false;
        }
        return true;
    }
}