  We solve several problems on frequently hypercyclic operators. Firstly, we
characterize frequently hypercyclic weighted shifts on $\ell^p(\mathbb Z)$,
$p\geq 1$. Our method uses properties of the difference set of a set with
positive upper density. Secondly, we show that there exists an operator which
is $\mathcal U$-frequently hypercyclic, yet not frequently hypercyclic and that
there exists an operator which is frequently hypercyclic, yet not
distributionally chaotic. These (surprizing) counterexamples are given by
weighted shifts on $c_0$. The construction of these shifts lies on the
construction of sets of positive integers whose difference sets have very
specific properties.
