java.lang.Object
g0801_0900.s0893_groups_of_special_equivalent_strings.Solution

public class Solution extends Object
893 - Groups of Special-Equivalent Strings.<p>Medium</p> <p>You are given an array of strings of the same length <code>words</code>.</p> <p>In one <strong>move</strong> , you can swap any two even indexed characters or any two odd indexed characters of a string <code>words[i]</code>.</p> <p>Two strings <code>words[i]</code> and <code>words[j]</code> are <strong>special-equivalent</strong> if after any number of moves, <code>words[i] == words[j]</code>.</p> <ul> <li>For example, <code>words[i] = &quot;zzxy&quot;</code> and <code>words[j] = &quot;xyzz&quot;</code> are <strong>special-equivalent</strong> because we may make the moves <code>&quot;zzxy&quot; -> &quot;xzzy&quot; -> &quot;xyzz&quot;</code>.</li> </ul> <p>A <strong>group of special-equivalent strings</strong> from <code>words</code> is a non-empty subset of words such that:</p> <ul> <li>Every pair of strings in the group are special equivalent, and</li> <li>The group is the largest size possible (i.e., there is not a string <code>words[i]</code> not in the group such that <code>words[i]</code> is special-equivalent to every string in the group).</li> </ul> <p>Return <em>the number of <strong>groups of special-equivalent strings</strong> from</em> <code>words</code>.</p> <p><strong>Example 1:</strong></p> <p><strong>Input:</strong> words = [&ldquo;abcd&rdquo;,&ldquo;cdab&rdquo;,&ldquo;cbad&rdquo;,&ldquo;xyzz&rdquo;,&ldquo;zzxy&rdquo;,&ldquo;zzyx&rdquo;]</p> <p><strong>Output:</strong> 3</p> <p><strong>Explanation:</strong></p> <p>One group is [&ldquo;abcd&rdquo;, &ldquo;cdab&rdquo;, &ldquo;cbad&rdquo;], since they are all pairwise special equivalent, and none of the other</p> <p>strings is all pairwise special equivalent to these.</p> <p>The other two groups are [&ldquo;xyzz&rdquo;, &ldquo;zzxy&rdquo;] and [&ldquo;zzyx&rdquo;].</p> <p>Note that in particular, &ldquo;zzxy&rdquo; is not special equivalent to &ldquo;zzyx&rdquo;.</p> <p><strong>Example 2:</strong></p> <p><strong>Input:</strong> words = [&ldquo;abc&rdquo;,&ldquo;acb&rdquo;,&ldquo;bac&rdquo;,&ldquo;bca&rdquo;,&ldquo;cab&rdquo;,&ldquo;cba&rdquo;]</p> <p><strong>Output:</strong> 3</p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= words.length <= 1000</code></li> <li><code>1 <= words[i].length <= 20</code></li> <li><code>words[i]</code> consist of lowercase English letters.</li> <li>All the strings are of the same length.</li> </ul>
  • Constructor Details

    • Solution

      public Solution()
  • Method Details

    • numSpecialEquivGroups

      public int numSpecialEquivGroups(String[] words)