zoukankan      html  css  js  c++  java
  • Similar String Groups

    2020-01-03 11:15:27

    问题描述

    问题求解

    本题最开始看的时候有点没搞懂,看似直接使用并查集并不太合适。

    实际可以直接使用dfs来做,只需要将所有属于同一类的给标记掉即可,这也提醒我以后这种聚类的问题如果无法直接使用并查集来做的话,可以尝试一下使用dfs,另外,最近发现dfs是真的大杀器,绝大多数的问题都可以使用dfs来暴力出一个结果。

        public int numSimilarGroups(String[] A) {
            int n = A.length;
            if (n < 2) return n;
            int res = 0;
            for (int i = 0; i < n; i++) {
                if (A[i] == null) continue;
                res += 1;
                String str = A[i];
                A[i] = null;
                dfs(A, str);
            }
            return res;
        }
        
        private void dfs(String[] A, String str) {
            for (int i = 0; i < A.length; i++) {
                if (A[i] == null) continue;
                if (helper(A[i], str)) {
                    String tmp = A[i];
                    A[i] = null;
                    dfs(A, tmp);
                }
            }
        }
        
        private boolean helper(String s1, String s2) {
            int res = 0;
            int[] count = new int[128];
            boolean flag = false;
            for (int i = 0; i < s1.length(); i++) {
                if (s1.charAt(i) != s2.charAt(i)) res += 1;
                if (res > 2) break;
                count[s1.charAt(i)] += 1;
                if (count[s1.charAt(i)] > 1) flag = true;
            }
            return res == 2 || (res == 0 && flag);
        }
    

      

  • 相关阅读:
    Spring IOC实现原理,源码深度剖析!
    MYSQL配置参数优化详解
    MYSQL 索引优化全攻略
    MySQL性能优化实战
    最强MySQL MVCC实现原理
    redis集群代建
    redis分布式锁
    mysql 的语句的执行顺序
    Rockey pushConsumer 和 pullConsumer 的区别
    RockeyMQ消息处理
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/12143947.html
Copyright © 2011-2022 走看看