Leetcode PHP题解--D46 893. Groups of Special-Equivalent Strings


D46 893. Groups of Special-Equivalent Strings

题目链接

893. Groups of Special-Equivalent Strings

题目分析

称一个字符串中,互换第奇数位(或偶数位)形成的新单词与原单词为特殊相等。

给定一个字符串数组A,计算该数组中有多少个独立的特殊相等词。

例如,单词abcdcbad 为特殊相等词。也与adcbcdab特殊相等。

思路

先把字符串分割成数组,把第偶数个字符和第奇数个字符分别存放。

再对偶数字符数组和奇数字符数组进行排序。

接下来用分隔符拼接这两个数组。使得对任何一个特殊相等的词都有同一个值。把拼接后的字符串作为键存入数组中。(作为值存进去的话需要去重)

计算数组中的元素个数即可。

最终代码

<?php
class Solution {
    function numSpecialEquivGroups($A) {
        $words = [];
        foreach($A as $b){
            $odd = $even = [];
            $chars = str_split($b);
            foreach($chars as $key=>$char){
                if($key%2==0){
                    $odd[] = $char;
                }
                else{
                    $even[] = $char;
                }
            }
            sort($odd);
            sort($even);
            $words[implode('',$odd).'/'.implode('',$even)] = true;
        }
        return count($words);
    }
}

若觉得本文章对你有用,欢迎用爱发电资助。


点赞 取消点赞 收藏 取消收藏

<< 上一篇: Leetcode PHP题解--D45 D45 872. Leaf-Similar Trees

>> 下一篇: Leetcode基础刷题之PHP解析(337. House Robber III)