are there any cases that in LAN, host are assigned public IP? if so, why in these cases, public IPs are used in LAN?
If your ISP is giving you an entire block of public IPv4 addresses, and you have enough to cover each system in your LAN, then you can give each system in your LAN one of those IPv4 addresses.
Regarding IPv4, this is increasingly rare since all ipv4 addresses have been assigned to registrars. Some organizations have large /24 blocks from when they were assigned in the beginning, like IBM, etc.
If your ISP only gives you 1 public IPv4 address, as is the usual situation if you are a residental or small-business ISP customer, you'll then need to use NAT and private IP addresses on your LAN.
With IPv6, your ISP likely does give you a large block (like a /64 or a /32) and you can usually give each system on your LAN a public IP address.