Beautiful Binary String
Generic pattern argument but hardcoded assumptions
It's nice that you added a generic pattern argument, but your code depends on the pattern being &quot;010&quot; here:

      if (j == patternLen) {
        count++;
        chars[i+2] = '1';
      }


Here, you have hardcoded both a 2 and a '1'.  Your program would crash if the pattern were shorter than 3 characters and if i were the last index of the array.  Also, if the pattern were &quot;101&quot;, setting the last character to '1' would not accomplish anything.
It would be better to just skip the rest of the pattern:
      if (j == patternLen) {
        count++;
        i += patternLen - 1;
      }