Not directly in terms of calculate the input out of the resulting hash.
But in this case you could just create a list of all addresses and their hash. Then lookup the hash in your table and you got the corresponding address.
Block explorer run a full node (e.g. bitcoin core) with txindex=1 and some custom software to query the needed data.
They most likely don't run an electrum server. There is no obvious reason to do so.
Thank you very much, I think your suggestion is very good, I can create my own database to map hash and publickey in redis