Instead of trying to decide who is worthy of your dollar, perhaps consider what that dollar is worth to you vs. what it is worth to them.
If you give them a dollar and it's spent on something you don't approve of or you think they are not deserving that on them. If you don't give them anything because you assume they might not be worthy, that's on you.
If good deeds (or even neutral deeds) are scrutinized and discouraged, there will be no end of other, theoretical good deeds that might have been done, and no simple good deed will be done.
How do you define scammer? If a person is homeless, but holds up a gas can with a sign that says "ran out of gas please help!" then they're lying about why they need the money, but they aren't scamming in terms of not actually being homeless.
What about junkies too-- they still need to eat. Absent enough money to do both, they might choose just to get high, deteriorate more, have even less chance of recovery.
There's no easy litmus test here. No easy way to ensure the money you give is going to be used in the best possible way to improve someone's life.