题目描述
* 这是这个问题的 hard 版本。它们的区别在于 $n$ 的数据范围。
给你一个长度为 $n$ 的只含英文小写字母的字符串 $S$ ,你需要找到有多少个 `hello` 子序列。
子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置(在前或在后)而形成的新序列。
例如:对于字符串 `abccde` 而言, `acce` 和 `abcc` 是它的一个子序列,而 `adcce` 不是。
输入格式
第一行一个正整数 $n \ (1\le n \le 5\times 10^5)$。
第二行一个长度为 $n$ 的只含英文小写字母的字符串 $S$。
输出格式
输出一行,字符串 $S$ 中 `hello` 子序列的个数。
答案对 $10^9 + 7$ 取模。