I do a combination of the above. I use LastPass and use long unique complex strings for each site. But there is a method to my madness, and I have a fighting chance of being able to reconstruct the password for a given site if I get really stuck. It's not foolproof - for example, deciding whether I use 0, O, or o in the password will depend on my own classification of how I use the site in question (work, play, financial, etc). I have similar rules for various other characters. I do get a bit stymied by sites that don't allow special characters.
Thankfully most of the time Lastpass takes the strain.