@@ -62,19 +62,18 @@ Thus, it is impossible to collect the rainwater from all the houses.
62
62
``` python
63
63
class Solution :
64
64
def minimumBuckets (self , street : str ) -> int :
65
- n, last = len (street), - 2
66
65
ans = 0
67
- for i, v in enumerate (street):
68
- if v == ' H' :
69
- if last == i - 1 :
70
- continue
66
+ i, n = 0 , len (street)
67
+ while i < n:
68
+ if street[i] == ' H' :
71
69
if i + 1 < n and street[i + 1 ] == ' .' :
72
- last = i + 1
73
- elif i - 1 >= 0 and street[i - 1 ] == ' .' :
74
- last = i - 1
70
+ i += 2
71
+ ans += 1
72
+ elif i and street[i - 1 ] == ' .' :
73
+ ans += 1
75
74
else :
76
75
return - 1
77
- ans += 1
76
+ i += 1
78
77
return ans
79
78
```
80
79
@@ -83,26 +82,68 @@ class Solution:
83
82
``` java
84
83
class Solution {
85
84
public int minimumBuckets (String street ) {
86
- int last = - 2 , n = street. length();
85
+ int n = street. length();
87
86
int ans = 0 ;
88
- for (int i = 0 ; i < n; i++ ) {
89
- char c = street. charAt(i);
90
- if (c == ' H' ) {
91
- if (last == i - 1 ) {
92
- continue ;
93
- }
87
+ for (int i = 0 ; i < n; ++ i) {
88
+ if (street. charAt(i) == ' H' ) {
94
89
if (i + 1 < n && street. charAt(i + 1 ) == ' .' ) {
95
- last = i + 1 ;
96
- } else if (i - 1 >= 0 && street. charAt(i - 1 ) == ' .' ) {
97
- last = i - 1 ;
90
+ ++ ans;
91
+ i += 2 ;
92
+ } else if (i > 0 && street. charAt(i - 1 ) == ' .' ) {
93
+ ++ ans;
94
+ } else {
95
+ return - 1 ;
96
+ }
97
+ }
98
+ }
99
+ return ans;
100
+ }
101
+ }
102
+ ```
103
+
104
+ ### ** C++**
105
+
106
+ ``` cpp
107
+ class Solution {
108
+ public:
109
+ int minimumBuckets(string street) {
110
+ int n = street.size();
111
+ int ans = 0;
112
+ for (int i = 0; i < n; ++i) {
113
+ if (street[ i] == 'H') {
114
+ if (i + 1 < n && street[ i + 1] == '.') {
115
+ ++ans;
116
+ i += 2;
117
+ } else if (i && street[ i - 1] == '.') {
118
+ ++ans;
98
119
} else {
99
120
return -1;
100
121
}
101
- ans++ ;
102
122
}
103
123
}
104
124
return ans;
105
125
}
126
+ };
127
+ ```
128
+
129
+ ### **Go**
130
+
131
+ ```go
132
+ func minimumBuckets(street string) int {
133
+ ans, n := 0, len(street)
134
+ for i := 0; i < n; i++ {
135
+ if street[i] == 'H' {
136
+ if i+1 < n && street[i+1] == '.' {
137
+ ans++
138
+ i += 2
139
+ } else if i > 0 && street[i-1] == '.' {
140
+ ans++
141
+ } else {
142
+ return -1
143
+ }
144
+ }
145
+ }
146
+ return ans
106
147
}
107
148
```
108
149
0 commit comments