Class FoodRatings
-
- All Implemented Interfaces:
public final class FoodRatings2353 - Design a Food Rating System\.
Medium
Design a food rating system that can do the following:
Modify the rating of a food item listed in the system.
Return the highest-rated food item for a type of cuisine in the system.
Implement the
FoodRatingsclass:FoodRatings(String[] foods, String[] cuisines, int[] ratings)Initializes the system. The food items are described byfoods,cuisinesandratings, all of which have a length ofn.void changeRating(String food, int newRating)Changes the rating of the food item with the namefood.String highestRated(String cuisine)Returns the name of the food item that has the highest rating for the given type ofcuisine. If there is a tie, return the item with the lexicographically smaller name.
Note that a string
xis lexicographically smaller than stringyifxcomes beforeyin dictionary order, that is, eitherxis a prefix ofy, or ifiis the first position such thatx[i] != y[i], thenx[i]comes beforey[i]in alphabetic order.Example 1:
Input
"FoodRatings", "highestRated", "highestRated", "changeRating", "highestRated", "changeRating", "highestRated"
[["kimchi", "miso", "sushi", "moussaka", "ramen", "bulgogi", "korean", "japanese", "japanese", "greek", "japanese", "korean", 9, 12, 8, 15, 14, 7], "korean", "japanese", "sushi", 16, "japanese", "ramen", 16, "japanese"]
Output:
null, "kimchi", "ramen", null, "sushi", null, "ramen"
Explanation:
FoodRatings foodRatings = new FoodRatings(["kimchi", "miso", "sushi", "moussaka", "ramen", "bulgogi"], ["korean", "japanese", "japanese", "greek", "japanese", "korean"], [9, 12, 8, 15, 14, 7]); foodRatings.highestRated("korean"); // return "kimchi" // "kimchi" is the highest rated korean food with a rating of 9. foodRatings.highestRated("japanese"); // return "ramen" // "ramen" is the highest rated japanese food with a rating of 14. foodRatings.changeRating("sushi", 16); // "sushi" now has a rating of 16. foodRatings.highestRated("japanese"); // return "sushi" // "sushi" is the highest rated japanese food with a rating of 16. foodRatings.changeRating("ramen", 16); // "ramen" now has a rating of 16. foodRatings.highestRated("japanese"); // return "ramen" // Both "sushi" and "ramen" have a rating of 16. // However, "ramen" is lexicographically smaller than "sushi".Constraints:
<code>1 <= n <= 2 * 10<sup>4</sup></code>
n == foods.length == cuisines.length == ratings.length1 <= foods[i].length, cuisines[i].length <= 10foods[i],cuisines[i]consist of lowercase English letters.<code>1 <= ratingsi<= 10<sup>8</sup></code>
All the strings in
foodsare distinct.foodwill be the name of a food item in the system across all calls tochangeRating.cuisinewill be a type of cuisine of at least one food item in the system across all calls tohighestRated.At most <code>2 * 10<sup>4</sup></code> calls in total will be made to
changeRatingandhighestRated.
-
-
Method Summary
Modifier and Type Method Description final UnitchangeRating(String food, Integer newRating)final StringhighestRated(String cuisine)
-