============================================================ Exercise 2.4 - Compare S1, S2 To Delete Same Character in S1 ============================================================ Question ======== Write an alternative version of squeeze(s1,s2) that deletes each character in s1 that matches any character in the string s2. .. literalinclude:: cprogs/ex_2.4_squeezess.c :language: c Explanation =========== Let's take the two inputs strings as: .. code-block:: bash HelloWorld ol Our desired output is .. code-block:: bash HeWrd This has removed the characters `o` and `l` from the first string. The way squeeze works is, it take each character from the first string and if there is no match found, stores it with a new index `k`. If there is a match found in **s2**, it simply skips it. The way it skips is realized by the following .. code-block:: c for(j=0; (s1[i]!=s2[j]) && s2[j]!='\0' ;++j) ; if(s2[j]=='\0') s1[k++] = s1[i]; When the match is found **s1[i] == s2[j]** so our first for loop will **end**. The second **if condtion** will fail too as s2 is not iterated till the end, so we do not place the character in **s1[k++]** and we have successfully skipped it. Visualization ============= .. raw:: html Try It Out ========== .. raw:: html