Isomorphic Strings (LeetCode 205) | Full solution using a HashMap | Easy to understand

Поділитися
Вставка
  • Опубліковано 24 січ 2025

КОМЕНТАРІ • 78

  • @jaxsyntax
    @jaxsyntax Рік тому +26

    Nikhil, you are one of the only people that make these problems simple and easy to understand. I appreciate your efforts very much!

  • @Maneeshce2007
    @Maneeshce2007 Рік тому +1

    Really like the way of your explanation Nikhil , it encourages to solve DS problems which otherwise feels very frustrating.

  • @vikashkatiyar1225
    @vikashkatiyar1225 9 місяців тому +1

    u got a new subscriber ,
    Thanks Nikhil for amazing quality content

  • @adveshdarvekar7733
    @adveshdarvekar7733 7 місяців тому +5

    If you are coding in c++, you will need 2 hashmaps as you can't make sure the letter is not present in the key as well as the value.

  • @manishbhardwaj4587
    @manishbhardwaj4587 8 місяців тому

    best teacher, its hard to follow others even if they have same solution as you!
    Thankyou!!

  • @rajmahto7946
    @rajmahto7946 4 місяці тому

    You are inspiration sir, keep similing

  • @XiaoFang-m8c
    @XiaoFang-m8c Рік тому

    Thank you so much for making these problems simple and easy to understand, your explanation is best.

  • @sohrab6494
    @sohrab6494 Рік тому +5

    Your explanations are great and you make them so much easier to understand. Can you also solve '605. Can Place Flowers'?

    • @nikoo28
      @nikoo28  Рік тому +4

      thank you so much...sure I will add it to my pipeline of upcoming videos.

  • @ashtonronald
    @ashtonronald 9 місяців тому +1

    problem made extremely intuitive, gg!

  • @thebhagwabilla
    @thebhagwabilla 4 місяці тому

    Awesome explanation sir

  • @snehasaxena6551
    @snehasaxena6551 4 місяці тому

    Found best teacher 🏆🏆

  • @ssss22144
    @ssss22144 2 місяці тому

    Nice explanation annaa

  • @hoddybhaba6704
    @hoddybhaba6704 Рік тому +1

    Great explaination!

  • @2550a
    @2550a Місяць тому

    why does chatGPT say that in this case time complexity is n^2? it says because you are in a for loop and each time you using containsValue(). Is that correct?

  • @dobermanbruce2397
    @dobermanbruce2397 Рік тому +1

    Really Appreciate your efforts

  • @creative.shreative559
    @creative.shreative559 2 місяці тому

    God may bless this instructor ❤
    Thank you sir🙌🏻🫶🏻

  • @103_debopriyoghosh_cse_by6
    @103_debopriyoghosh_cse_by6 8 місяців тому

    U are great , no idea why u are undeerrated

  • @acethoughtless1596
    @acethoughtless1596 Рік тому

    Very nice explanation !! Thank you!!

    • @nikoo28
      @nikoo28  Рік тому +1

      Glad it was helpful!

  • @cricketkeeda3851
    @cricketkeeda3851 3 місяці тому

    bro at 9:15 timestamp you are wrong 'a' should be mapped with 'i' but you mapped it with 'd' , BTW good explanation

  • @just_a_guy6985
    @just_a_guy6985 11 місяців тому +1

    u dont need if condition at start in constraints its given that two strings are of same length

    • @aryasharma69
      @aryasharma69 5 місяців тому

      there can be a chance of different constraints. So that case is mandatory

  • @bahubali1939
    @bahubali1939 8 місяців тому

    Amazing sirr!! We love you..........

  • @mma-dost
    @mma-dost 10 місяців тому

    Java have a method to check the containsValue in the map, but cpp don't have that what should we do like creating another set for storing the values and then like check if the value contains in that something like this? This solved it but what about space complexity using map and set both.

    • @nikoo28
      @nikoo28  10 місяців тому +1

      If you use std::unordered_map, which is implemented as a hash table, the average case time complexity for insertion, deletion, and search is O(1).

    • @mma-dost
      @mma-dost 10 місяців тому

      thanks, bhaiya got it@@nikoo28

  • @kevalkapadia8219
    @kevalkapadia8219 3 місяці тому

    is this code written in java or C++

  • @vinayaksharma7134
    @vinayaksharma7134 9 місяців тому +1

    nice explanation

  • @lalanabiridi8358
    @lalanabiridi8358 Рік тому

    Hey nikhil i have a small doubt
    what happenns if we dont create a new variable mapped char but instead directly compare original with replacement
    i did that and out of 47 ..12 test cases failed

  • @plutomessi21
    @plutomessi21 Рік тому +2

    bhaiya this code passed 35/44 test cases
    class Solution {
    public boolean isIsomorphic(String s, String t) {
    ArrayList s1 = new ArrayList();
    ArrayList s2 = new ArrayList();
    int count = 1;
    for (int i = 1; i < s.length(); i++) {
    if (s.charAt(i) == s.charAt(i - 1)) {
    count++;
    } else {
    s1.add(count);
    count = 1;
    }
    }
    // s1.add(count);
    int count1 = 1;
    for (int i = 1; i < t.length(); i++) {
    if (t.charAt(i) == t.charAt(i - 1)) {
    count1++;
    } else {
    s2.add(count1);
    count1 = 1;
    }
    }
    s2.add(count1);
    return s1.equals(s2);
    }
    }

    • @nikoo28
      @nikoo28  Рік тому +1

      have a look at the code in the video description. You will find a github link. That code passes all cases :)

    • @plutomessi21
      @plutomessi21 Рік тому

      @@nikoo28 thank you bhaiya

  • @parthapardhu3319
    @parthapardhu3319 Рік тому

    Wow.. simply good sir

  • @vilakshan.s
    @vilakshan.s 9 місяців тому

    As per leetcode looks like length of string can go till 5 * 10^4. So containsValue() can potentially end up doing nested looping with O(n) time complexity. Maybe we can improve this by having another reverse HashMap to improve the look up time. SpaceWise it will be 2X but I guess space is much cheaper than time :)

    • @nikoo28
      @nikoo28  7 місяців тому

      Even if the string length is huge, you only have 256 different characters. This is almost constant time.

  • @BACSShaileshShettar
    @BACSShaileshShettar Рік тому

    great explanation

  • @Atpataang
    @Atpataang 7 днів тому

    You are fabbbbb

  • @filmonghebremariam8981
    @filmonghebremariam8981 11 місяців тому

    Are "afa" and "dde" Isomorphic or not?

    • @nikoo28
      @nikoo28  11 місяців тому

      they are not

  • @Harshu9669
    @Harshu9669 10 місяців тому

    thanx brother

  • @hashcodez757
    @hashcodez757 5 місяців тому +1

    some wondering O(n) kha se hai bhai ye?
    its not O(n^2) because :-
    The inner loop, despite being inside the for loop, checks only the characters in the map. Since the map can hold at most n elements (one for each character in the string), the overall complexity remains linear, i.e., O(n).

    • @vishalkushwaha6879
      @vishalkushwaha6879 3 місяці тому

      Bro you should learn java from the start the method he used contains value run in O(n) that's why this O(n2)

    • @hashcodez757
      @hashcodez757 2 місяці тому

      🤣
      Brother I've spent days on this doubt.
      Trust me

  • @Isagi__000
    @Isagi__000 9 місяців тому

    cool stuff.

  • @abhishekj2096
    @abhishekj2096 6 місяців тому

    This solution has runtime of 10ms and beats only 68%. Do you have a faster solution?

    • @nikoo28
      @nikoo28  6 місяців тому +2

      don't go by these numbers you see on leetcode. If your solution is accepted, it is usually a good enough solution. The runtime usually depends on a lot of things:
      - the startup time of the VM
      - the language choice
      - the processor of the VM
      - the version of software stack

  • @vishalkushwaha6879
    @vishalkushwaha6879 3 місяці тому

    Your code timecomplexity is O(n^2) and timecomplexity O(n)

  • @hitheshpk6030
    @hitheshpk6030 Рік тому +1

    Understood

  • @subee128
    @subee128 Рік тому

    Thanks

  • @AyushJain-m4u
    @AyushJain-m4u Рік тому

    Will this code pass the test case
    s = "12" t = "\u0067\u0068"

    • @nikoo28
      @nikoo28  Рік тому

      did you try it out?

  • @dupladupa-gl8lo
    @dupladupa-gl8lo 5 місяців тому

    u so sick dudeee

  • @samiranroyy1700
    @samiranroyy1700 4 місяці тому

    You said:
    why this shows this error please help.. class Solution {
    public boolean isIsomorphic(String s, String t) {
    int n = s.length();
    int m = t.length();
    if(n!=m)
    {
    return false;
    }
    Map sam = new HashMap();
    for(int i=0;i

  • @dobermanbruce2397
    @dobermanbruce2397 Рік тому +2

    😍😍😍😍😍😍😍😍😍😍😍

  • @mstinku9003
    @mstinku9003 8 місяців тому

    easy way to solve this is l=len(set(zip(s,t)) a=len(s) b=len(t) return l==a==b: how easy it is using length

  • @room5079
    @room5079 4 місяці тому

    why don't we do like this:
    finding charecter frequency arrays for both strings.
    sorting them ...and comparing the sorted values.

    • @jst8922
      @jst8922 2 місяці тому

      It is slower.
      n logn time.

    • @ictfan-ly8gh
      @ictfan-ly8gh 10 днів тому

      It's will give wrong result if this is the test case
      Paper
      Tilte (it s not title)
      See here t and p will come two times in character freq array but we can see if p replaces t it will not give same word

  • @ssss22144
    @ssss22144 4 місяці тому

  • @delhidhamkhatushyam31
    @delhidhamkhatushyam31 Рік тому +1

    how Paper and Title is isomorphic string you are teching wrong to students

  • @ArunKumar-gx8iv
    @ArunKumar-gx8iv 11 місяців тому

    public boolean isIsomorphic(String s, String t) {
    int n1 = s.length();
    int n2 = t.length();
    if (n1 != n2) {
    return false;
    }
    HashMap mapST = new HashMap();
    HashMap mapTS = new HashMap();
    for (int i = 0; i < n1; i++) {
    char c1 = s.charAt(i);
    char c2 = t.charAt(i);
    if (mapTS.containsKey(c1) && mapTS.get(c1) != c2) {
    return false;
    }
    if (mapST.containsKey(c2) && mapST.get(c2) != c1) {
    return false;
    }
    mapTS.put(c1, c2);
    mapST.put(c2, c1);
    }
    return true;
    }

  • @anveshsrivastava7786
    @anveshsrivastava7786 6 місяців тому

    won't the time complexity be O(N^2) as the the containsValue() method goes through all the key value pairs in a hashmap?
    can someone please clarify

    • @sidharthan3349
      @sidharthan3349 5 місяців тому

      yes same doubt

    • @sidharthan3349
      @sidharthan3349 5 місяців тому

      @nikoo28 can you please reply

    • @sachinboreoffl
      @sachinboreoffl 3 місяці тому

      In the hashmap, at max u can have 256 characters so it's a constant time

  • @Electrocode_gk
    @Electrocode_gk 11 місяців тому

    very bad video

    • @nikoo28
      @nikoo28  11 місяців тому

      can you please let me know which part was difficult to understand?

    • @Electrocode_gk
      @Electrocode_gk 11 місяців тому

      @@nikoo28 first description part it's self u confused

    • @nikoo28
      @nikoo28  11 місяців тому +1

      which timestamp is confusing you? I added 4 different test cases to clear any confusion.

    • @Electrocode_gk
      @Electrocode_gk 11 місяців тому

      @@nikoo28 paper title how e r l e can be mapped e is common 4 case also true

    • @nikoo28
      @nikoo28  11 місяців тому +3

      @@Electrocode_gk if "paper" is your start string, you are mapping E -> L, and R -> E
      but if "title" is your start string, then you map L -> E and E -> R
      You are mapping different characters.
      But in case 4, when you start from "kikp" you are mapping the same character K once to B and then to D. This is not allowed.

  • @Krixnbhakt
    @Krixnbhakt 11 місяців тому

    I'm not able to understand the second else condition - else{ char mappedCharacter = charMappingMap.get(original); if (mappedCharacter != replacement)return false;}

    • @anilkumarsingh7141
      @anilkumarsingh7141 11 місяців тому

      Just think opposite like s1 = "kikp" and s2 = "badc" . I hope you got it

  • @vivekkumaryadav9862
    @vivekkumaryadav9862 Рік тому

    def isIsomorphic(self, s, t):
    map1 = []
    map2 = []
    for idx in s:
    map1.append(s.index(idx))
    for idx in t:
    map2.append(t.index(idx))
    if map1 == map2:
    return True
    return False