首页 > 其他 > 详细

Similar String Groups

时间:2020-01-03 11:31:44      阅读:92      评论:0      收藏:0      [点我收藏+]

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);
    }

  

 

Similar String Groups

原文:https://www.cnblogs.com/hyserendipity/p/12143947.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!