1436. 旅行终点站『简单』
题目来源于力扣(LeetCode)
一、题目
题目相关标签:字符串
提示:
- 1 <= paths.length <= 100
- paths[i].length == 2
- 1 <= cityAi.length, cityBi.length <= 10
- cityAi != cityBi
- 所有字符串均由大小写英文字母和空格字符组成。
二、解题思路
-
据题解可知:旅行终点站即是没有任何指向的字符串
-
遍历 paths 列表,因列表中的嵌套列表仅有两个元素,则使用 map 来记录字符串,索引 0 上的元素为键,索引 1 上的元素为值
-
查找 map,找到键映射为空的字符串,没有值即是没有下一个旅行点,即终点站
三、代码实现
public static String destCity(List<List<String>> paths) {
Map<String, String> map = new HashMap<>();
for (List<String> list : paths) {
// 键为起点,值为终点
map.put(list.get(0), list.get(1));
}
// 初始查找值为 paths 的第一个列表的第一个元素
String str = paths.get(0).get(0);
// 该字符串找不到对应的值时,说明为终点
while (map.containsKey(str)) {
// 每次更新查找的键,map 值即为下一个旅行站的起点
str = map.get(str);
}
return str;
}
四、执行用时
五、部分测试用例
public static void main(String[] args) {
List<List<String>> paths = new ArrayList<>();
List<String> list = new ArrayList<>();
list.add("London");
list.add("New York");
paths.add(list);
list.add("New York");
list.add("Lima");
paths.add(list);
list.add("Lima");
list.add("Sao Paulo");
paths.add(list); // output:"Sao Paulo"
String result = destCity(paths);
System.out.println(result);
}