If you have cut the debt from $45K to $20K in a year, then it appears you have your act together and can budget responsibly - congratulations!
Given that you have the psychological part in control, it thus becomes a very objective calculation: you will (assuming markets behave as they have) earn a higher return by investing in the 401k than by prepaying a 0% loan.
If you really can flip to new 0% cards, and any resulting drop in credit score is immaterial to you, then maximize the 401k and let the card repayment stretch. Of course, if any of the above ifs evaluate to "false", different conclusions may occur.