Welcome to Subscribe On Youtube
2086. Minimum Number of Food Buckets to Feed the Hamsters
Description
You are given a 0-indexed string hamsters where hamsters[i] is either:
'H'indicating that there is a hamster at indexi, or'.'indicating that indexiis empty.
You will add some number of food buckets at the empty indices in order to feed the hamsters. A hamster can be fed if there is at least one food bucket to its left or to its right. More formally, a hamster at index i can be fed if you place a food bucket at index i - 1 and/or at index i + 1.
Return the minimum number of food buckets you should place at empty indices to feed all the hamsters or -1 if it is impossible to feed all of them.
Example 1:

Input: hamsters = "H..H" Output: 2 Explanation: We place two food buckets at indices 1 and 2. It can be shown that if we place only one food bucket, one of the hamsters will not be fed.
Example 2:

Input: hamsters = ".H.H." Output: 1 Explanation: We place one food bucket at index 2.
Example 3:

Input: hamsters = ".HHH." Output: -1 Explanation: If we place a food bucket at every empty index as shown, the hamster at index 2 will not be able to eat.
Constraints:
1 <= hamsters.length <= 105hamsters[i]is either'H'or'.'.
Solutions
-
class Solution { public int minimumBuckets(String street) { int n = street.length(); int ans = 0; for (int i = 0; i < n; ++i) { if (street.charAt(i) == 'H') { if (i + 1 < n && street.charAt(i + 1) == '.') { ++ans; i += 2; } else if (i > 0 && street.charAt(i - 1) == '.') { ++ans; } else { return -1; } } } return ans; } } -
class Solution { public: int minimumBuckets(string street) { int n = street.size(); int ans = 0; for (int i = 0; i < n; ++i) { if (street[i] == 'H') { if (i + 1 < n && street[i + 1] == '.') { ++ans; i += 2; } else if (i && street[i - 1] == '.') { ++ans; } else { return -1; } } } return ans; } }; -
class Solution: def minimumBuckets(self, street: str) -> int: ans = 0 i, n = 0, len(street) while i < n: if street[i] == 'H': if i + 1 < n and street[i + 1] == '.': i += 2 ans += 1 elif i and street[i - 1] == '.': ans += 1 else: return -1 i += 1 return ans -
func minimumBuckets(street string) int { ans, n := 0, len(street) for i := 0; i < n; i++ { if street[i] == 'H' { if i+1 < n && street[i+1] == '.' { ans++ i += 2 } else if i > 0 && street[i-1] == '.' { ans++ } else { return -1 } } } return ans }