从房屋收集雨水需要的最少水桶数

描述:
给一个描述街道的字符串S,其中“H”代表一所房子,“-”代表空地,你可以把水箱放在空地上,从附近的房子里收集雨水,房子旁边有水箱,就可以收集自己的雨水

例如:
给定S=“-H-HH--”,可以使用2个水箱收集所有房子的雨水,一个水箱放在第一和第二所房子的中间,另一个放在第三间房子之后,水箱的位置可以表示为“-HTHHT-”,其中“T”代表水箱

    public static int minRainBucketsBetweenHouse(String S) {
        if (S == null || S.isEmpty()) {
            return -1;
        }
        int len = S.length();
        if (S.contains("HHH")) {
            return -1;
        }
        if (len == 1) {
            return -1;
        }

        if ('H' == S.charAt(0) && 'H' == S.charAt(1)) {
            return -1;
        }

        if ('H' == S.charAt(len - 1) && 'H' == S.charAt(len - 2)) {
            return -1;
        }

        S = S.replaceAll("H-H", "hTh");
        S = S.replaceAll("-H", "Th");
        S = S.replaceAll("H-", "hT");

        int tCount = 0;
        for (int i = 0; i < S.length(); i++) {
            if ('T' == S.charAt(i)) {
                tCount++;
            }
        }
        return tCount;
    }

你可能感兴趣的:(从房屋收集雨水需要的最少水桶数)