<p>给你一个下标从 <strong>0 </strong>开始的字符串数组 <code>words</code> 。每个字符串都只包含 <strong>小写英文字母</strong> 。<code>words</code> 中任意一个子串中,每个字母都至多只出现一次。</p> <p>如果通过以下操作之一,我们可以从 <code>s1</code> 的字母集合得到 <code>s2</code> 的字母集合,那么我们称这两个字符串为 <strong>关联的</strong> :</p> <ul> <li>往 <code>s1</code> 的字母集合中添加一个字母。</li> <li>从 <code>s1</code> 的字母集合中删去一个字母。</li> <li>将 <code>s1</code> 中的一个字母替换成另外任意一个字母(也可以替换为这个字母本身)。</li> </ul> <p>数组 <code>words</code> 可以分为一个或者多个无交集的 <strong>组</strong> 。如果一个字符串与另一个字符串关联,那么它们应当属于同一个组。</p> <p>注意,你需要确保分好组后,一个组内的任一字符串与其他组的字符串都不关联。可以证明在这个条件下,分组方案是唯一的。</p> <p>请你返回一个长度为 <code>2</code> 的数组 <code>ans</code> :</p> <ul> <li><code>ans[0]</code> 是 <code>words</code> 分组后的 <strong>总组数</strong> 。</li> <li><code>ans[1]</code> 是字符串数目最多的组所包含的字符串数目。</li> </ul> <p> </p> <p><strong>示例 1:</strong></p> <pre> <b>输入:</b>words = ["a","b","ab","cde"] <b>输出:</b>[2,3] <b>解释:</b> - words[0] 可以得到 words[1] (将 'a' 替换为 'b')和 words[2] (添加 'b')。所以 words[0] 与 words[1] 和 words[2] 关联。 - words[1] 可以得到 words[0] (将 'b' 替换为 'a')和 words[2] (添加 'a')。所以 words[1] 与 words[0] 和 words[2] 关联。 - words[2] 可以得到 words[0] (删去 'b')和 words[1] (删去 'a')。所以 words[2] 与 words[0] 和 words[1] 关联。 - words[3] 与 words 中其他字符串都不关联。 所以,words 可以分成 2 个组 ["a","b","ab"] 和 ["cde"] 。最大的组大小为 3 。 </pre> <p><strong>示例 2:</strong></p> <pre> <b>输入:</b>words = ["a","ab","abc"] <b>输出:</b>[1,3] <strong>解释:</strong> - words[0] 与 words[1] 关联。 - words[1] 与 words[0] 和 words[2] 关联。 - words[2] 与 words[1] 关联。 由于所有字符串与其他字符串都关联,所以它们全部在同一个组内。 所以最大的组大小为 3 。 </pre> <p> </p> <p><strong>提示:</strong></p> <ul> <li><code>1 <= words.length <= 2 * 10<sup>4</sup></code></li> <li><code>1 <= words[i].length <= 26</code></li> <li><code>words[i]</code> 只包含小写英文字母。</li> <li><code>words[i]</code> 中每个字母最多只出现一次。</li> </ul>