d) needs a bit elaboration.
(i) If the question is about a run of exactly 4 $0$'s (though possibly a longer run elsewhere), we can count like this:
There are $2^5$ strings starting with $00001$.
There are $2^5$ strings ending with $10000$.
For $0\le k\le 4$ there are $2^4$ strings $\alpha100001\beta$, where $\alpha$ is $k$ digits and $\beta$ is $4-k$ digits long. Note that we need the "sentinel" $1$s to prevent the block from being longer than 4.
That gives $2^5+2^5+5\cdot2^4=144$ strings.
However, $0000100001$, $0000110000$, $1000010000$ are counted twice, thus the answer is: 141.
Note that e.g. $0000100000$ is counted even though it has (also) a run of 5 0's.
(ii) If the question is about a run of at least 4 $0$'s, we can do this:
There are $2^6$ strings beginning with $0000$, i.e. with the block starting at the first digit.
For $2\le k\le 6$, there are $2^5$ strings of the form $\alpha10000\beta$ with $\alpha$ of length $k-1$ and $\beta$ of length $6-k$, i.e. with the block starting at the $k$th digit.
This give $2^6+5\cdot2^5=224$ strings.
However, we counted solutions with two blocks twice, namely $0000100001$, $0000110000$, $1000010000$, $0000100000$, $0000010000$. (Fortunately, there is not much room for two blocks).
Thus the answer is: 219.
This answer is based upon the Goulden-Jackson Cluster Method.
We consider the set words of length $n\geq 0$ built from an alphabet $$\mathcal{V}=\{0,1\}$$ and the set $B=\{010\}$ of bad words, which are not allowed to be part of the words we are looking for. We derive a generating function $f(s)$ with the coefficient of $s^n$ being the number of searched words of length $n$.
According to the paper (p.7) the generating function $f(s)$ is
\begin{align*}
f(s)=\frac{1}{1-ds-\text{weight}(\mathcal{C})}\tag{1}
\end{align*}
with $d=|\mathcal{V}|=2$, the size of the alphabet and $\mathcal{C}$ the weight-numerator of bad words with
\begin{align*}
\text{weight}(\mathcal{C})=\text{weight}(\mathcal{C}[010])
\end{align*}
We calculate according to the paper
\begin{align*}
\text{weight}(\mathcal{C}[010])&=-s^3-s^2\text{weight}(\mathcal{C}[010])\tag{1}\\
\end{align*}
and get
\begin{align*}
\text{weight}(\mathcal{C})=-\frac{s^3}{1+s^2}
\end{align*}
It follows
\begin{align*}
f(s)&=\frac{1}{1-ds-\text{weight}(\mathcal{C})}\\
&=\frac{1}{1-2s+\frac{s^3}{1+s^2}}\tag{2}\\
&=\frac{1+s^2}{1-2s+s^2-s^3}\\
&=1+2s+4s^2+7s^3+12s^4+\color{blue}{21}s^5\\
&\qquad+37s^6+65s^7+114s^8+200s^9+351s^{10}+\cdots
\end{align*}
The last line was calculated with the help of Wolfram Alpha. The coefficient of $s^5$ shows there are $\color{blue}{21}$ valid words of length $5$ from the alphabet $\{0,1\}$ which do not contain the word $010$.
But we want to also keep track of the number of $0$'s and $1$'s. We get a refinement of $f(s)$ by marking the $0$ with $x$ and the $1$'s with $y$. We obtain from (1)
\begin{align*}
\text{weight}(\mathcal{C}[010])&=-x^2ys^3-xys^2\text{weight}(\mathcal{C}[010])
\end{align*}
and get
\begin{align*}
\text{weight}(\mathcal{C})=-\frac{x^2ys^3}{1+xys^2}
\end{align*}
Using this generalized weight we obtain from (2) a generating function $g(s;x,y)$
\begin{align*}
g(s;x,y)&=\frac{1}{1-(x+y)s+\frac{x^2ys^3}{1+xys^2}}\\
&=\frac{1+xys^2}{1-(x+y)s+xys^2-xy^2s^3}\\
&=1+(x+y)s+(x^2+2xy+y^2)s^2+(x^3+2x^2y+3xy^2+y^3)\\
&\qquad+(x^4+2x^3y+4x^2y^2+4xy^3+y^4)s^4\\
&\qquad+(x^5+2x^4y+5x^3y^2+\color{red}{7}x^2y^3+5xy^4+y^5)s^5+\cdots
\end{align*}
So, e.g. out of $2^5=32$ binary words of length $5$ there are $\color{blue}{21}$ valid words which do not contain $010$ and $\color{red}{7}$ of them contain $n=2$ zeros and $m=3$ ones:
\begin{array}{cccc}
\qquad\color{blue}{00000}\qquad&\qquad01000\qquad&\qquad\color{blue}{10000}\qquad&\qquad\color{blue}{11000}\qquad\\
\color{blue}{00001}&01001&\color{blue}{10001}&\color{red}{11001}\\
00010&01010&10010&11010\\
\color{blue}{00011}&01011&\color{red}{10011}&\color{blue}{11011}\\
00100&\color{blue}{01100}&10100&\color{red}{11100}\\
00101&\color{red}{01101}&10101&\color{blue}{11101}\\
\color{blue}{00110}&\color{red}{01110}&\color{red}{10110}&\color{blue}{11110}\\
\color{red}{00111}&\color{blue}{01111}&\color{blue}{10111}&\color{blue}{11111}\\
\end{array}
Best Answer
We denote with
run of length $n$ a substring of $n$ consecutive, equal characters from a binary alphabet $\{0,1\}$.
A maximum run of a string is a run with maximum length.
An $n$-length zero-run is a run consisting of $n$ consecutive $0$s, and a one-run is specified accordingly.
We derive the number of admissible words of length $n$ by counting those words which are not admissible. The number of wanted words is $2^n$ minus this quantity. We do so by deriving a generating function \begin{align*} G^{(=2k+1,\geq 2k+1)}(z)\qquad\qquad\qquad k\geq 0 \end{align*} The first component of the index gives the maximum run length of $0$'s, the second component gives the maximum run length of $1$'s. So, $[z^n]G^{(=2k+1,\geq 2k+1)}(z)$ gives the number of words of length $n$ having maximum zero-runs of length $2k+1$ and maximum one-runs of length less or equal to $2k+1$.
We build the generating functions $G(z)$ from the generating function of Smirnov words also called Carlitz words. These are words with no consecutive equal characters at all. (See example III.24 Smirnov words from Analytic Combinatorics by Philippe Flajolet and Robert Sedgewick for more information.)
Replacing occurrences of $0$ in a Smirnov word by one up to $2k+1$ zeros generates words having runs of $0$ with length less or equal $2k+1$. \begin{align*} z\longrightarrow z+z^2+\cdots+z^{2k+1}=\frac{z\left(1-z^{2k+1}\right)}{1-z} \end{align*}
We finally conclude
Example: Let's calculate the number $a_6$ of admissible words of length $6$.
According to (1) we obtain the following series expansions (with some help of Wolfram Alpha) \begin{align*} G^{(=1,\leq 1)}(z)&=\frac{(1-z)^2(1-z^2)z}{(1-2z+z^2)(1-2z+z^2)}=\frac{(1+z)z}{1-z}\\ &=z+2z^2+2z^3+2z^4+2z^5+\color{blue}{2}z^6+2z^7+2z^8+2z^9+2z^{10}\cdots\\ G^{(=3,\leq 3)}(z)&=z^3+2z^4+5z^5+\color{blue}{12}z^6+25z^7+53z^8+109z^9+220z^{10}\cdots\\ G^{(=5,\leq 5)}(z)&=z^5+\color{blue}{2}z^6+5z^7+12z^8+28z^9+64z^{10}\cdots\\ \end{align*}
We conclude the number $a_6$ is given by \begin{align*} a_6&=2^6-[z^6]\sum_{k=0}^2G^{(=k,\leq k)}(z)\\ &=64-[z^6]\left(G^{(=1,\leq 1)}(z)+G^{(=3,\leq 3)}(z)+G^{(=5,\leq 5)}(z)\right)\\ &=64-\color{blue}{2}-\color{blue}{12}-\color{blue}{2}\\ &=48 \end{align*}
The $64-a_6=16$ non-admissible words are
\begin{array}{cccc} 1\color{blue}{0}1010&\color{blue}{0}10101\\ 001\color{blue}{000}&101\color{blue}{000}&011\color{blue}{000}&111\color{blue}{000}\\ \color{blue}{000}100&1\color{blue}{000}10&\color{blue}{000}110&01\color{blue}{000}1\\ 11\color{blue}{000}1&\color{blue}{000}101&1\color{blue}{000}11&\color{blue}{000}111\\ 1\color{blue}{00000}&\color{blue}{00000}1\\ \end{array}