Ho do I find a public team in Microsoft Teams

Quick answer: use SharePoint Search or Microsoft Search.

Detailed:
(alternatively – check this video)

From Teams – you can click on “Join or create a team” and you should be able to see some public teams (but not all):

See how Microsoft describes it – Find and Join a team
What if you are looking for a specific public team (not in the list) – there is a “Search teams” box at the top right

If you know the exact team name or at least some first letters – you are lucky.
Just type first 3-5 letters in the search bar at the top right and hit “enter”- you will see a list of public teams matching your search criteria:

NB: do not use wildcards searching for a team, it will not work:

NB: do not use top search bar searching for a team in m365 teams, it will not work too:

Scenario
You know what is the team about – so you can guess part of the team name, or description or some keywords from team content files

Unfortunately, in this case both great Microsoft technologies – Search and Teams – fail.
You are not able to find a public team with Teams search:

Solution: use SharePoint search – classic or modern one.
Each time a Team is created – a SharePoint site is created as a storage for documents.
In public teams – SharePoint site has “Everyone except external users” by default in “Members” group:

which literally means “Everyone except external users” has access to the site with “Edit” permissions.

Microsoft 365 SharePoint search works the way – if you have access to the site content – you will get results.
So just go to the SharePoint landing page or Office 365 home page or SharePoint search center and search for what you are looking for – for whatever you know or guess about the team:

There you can use all the power of SharePoint search (wildcards, refiners, keyword query language KQL etc).

Search from SharePoint landing page with wildcards:

Search from SharePoint Search center with wildcards and refinements:

Once you found something – you can go to the SharePoint site:

Once you found the SharePoint site behind the team – get to the team. How? Simple:
From the site – hover the mouse over the site name – you’ll see a pop-up window.
Now you know exact team name – and you can
a) return to Teams and search for the team, or
b) use “Join group” button to join the team directly from SharePoint:

Just one moment: you cannot search for team’s chat messages in SharePoint, as chats are saved not in SharePoint, but in Azure. All other content – lists, pages, wiki, documents – saved in SharePoint. Searching through team chat is available only in teams top search bar.

Another caveat: Description is not searchable at all (sadly). Both – SharePoint Search and Teams Search are not working against site/team description. Hopefully this will be addressed by Microsoft one day…

Bonus: You can also search for a public team by relative Url (former/first team name – if the team was renamed).

When you create a team – Office 365 generates a short team name to use as a SharePoint site relative Url (m365 removes spaces and – if the team name is not unique – adds numbers ; e.g. if the team name is “Test” you might have “test381” as a short name, but if the team name is “This Is My Unique Team” – short name would be “ThisIsMyUniqueTeam” and the Url will be like: https://myTenant.sharepoint.com/teams/ThisIsMyUniqueTeam).
Later you can change your team name. Teams search under MS teams works for both names – short name initially assigned and new team name. But still only if you are typing the starting characters.

Here is the video: