diff --git a/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/README.md b/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/README.md index c5820cbab72e7..6768511336330 100644 --- a/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/README.md +++ b/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/README.md @@ -83,7 +83,22 @@ ```python - +class Solution: + def minimumBuckets(self, street: str) -> int: + n, last = len(street), -2 + ans = 0 + for i, v in enumerate(street): + if v == 'H': + if last == i - 1: + continue + if i + 1 < n and street[i + 1] == '.': + last = i + 1 + elif i - 1 >= 0 and street[i - 1] == '.': + last = i - 1 + else: + return -1 + ans += 1 + return ans ``` ### **Java** @@ -91,7 +106,29 @@ ```java - +class Solution { + public int minimumBuckets(String street) { + int last = -2, n = street.length(); + int ans = 0; + for (int i = 0; i < n; i++) { + char c = street.charAt(i); + if (c == 'H') { + if (last == i - 1) { + continue; + } + if (i + 1 < n && street.charAt(i + 1) == '.') { + last = i + 1; + } else if (i - 1 >= 0 && street.charAt(i - 1) == '.') { + last = i - 1; + } else { + return -1; + } + ans++; + } + } + return ans; + } +} ``` ### **...** diff --git a/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/README_EN.md b/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/README_EN.md index 65e3844f27c87..4deb6d9fc5d80 100644 --- a/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/README_EN.md +++ b/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/README_EN.md @@ -60,13 +60,50 @@ Thus, it is impossible to collect the rainwater from all the houses. ### **Python3** ```python - +class Solution: + def minimumBuckets(self, street: str) -> int: + n, last = len(street), -2 + ans = 0 + for i, v in enumerate(street): + if v == 'H': + if last == i - 1: + continue + if i + 1 < n and street[i + 1] == '.': + last = i + 1 + elif i - 1 >= 0 and street[i - 1] == '.': + last = i - 1 + else: + return -1 + ans += 1 + return ans ``` ### **Java** ```java - +class Solution { + public int minimumBuckets(String street) { + int last = -2, n = street.length(); + int ans = 0; + for (int i = 0; i < n; i++) { + char c = street.charAt(i); + if (c == 'H') { + if (last == i - 1) { + continue; + } + if (i + 1 < n && street.charAt(i + 1) == '.') { + last = i + 1; + } else if (i - 1 >= 0 && street.charAt(i - 1) == '.') { + last = i - 1; + } else { + return -1; + } + ans++; + } + } + return ans; + } +} ``` ### **...** diff --git a/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/Solution.java b/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/Solution.java new file mode 100644 index 0000000000000..ac11b52f6eb78 --- /dev/null +++ b/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/Solution.java @@ -0,0 +1,23 @@ +class Solution { + public int minimumBuckets(String street) { + int last = -2, n = street.length(); + int ans = 0; + for (int i = 0; i < n; i++) { + char c = street.charAt(i); + if (c == 'H') { + if (last == i - 1) { + continue; + } + if (i + 1 < n && street.charAt(i + 1) == '.') { + last = i + 1; + } else if (i - 1 >= 0 && street.charAt(i - 1) == '.') { + last = i - 1; + } else { + return -1; + } + ans++; + } + } + return ans; + } +} diff --git a/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/Solution.py b/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/Solution.py new file mode 100644 index 0000000000000..924b3a38965e7 --- /dev/null +++ b/solution/2000-2099/2086.Minimum Number of Buckets Required to Collect Rainwater from Houses/Solution.py @@ -0,0 +1,16 @@ +class Solution: + def minimumBuckets(self, street: str) -> int: + n, last = len(street), -2 + ans = 0 + for i, v in enumerate(street): + if v == 'H': + if last == i - 1: + continue + if i + 1 < n and street[i + 1] == '.': + last = i + 1 + elif i - 1 >= 0 and street[i - 1] == '.': + last = i - 1 + else: + return -1 + ans += 1 + return ans