題目
給你一個字串 path,其中 path[i] 的值可以是 ‘N’、‘S’、‘E’ 或者 ‘W’,分別表示向北、向南、向東、向西移動一個單位,
機器人從二維平面上的原點 (0, 0) 處開始出發,按 path 所指示的路徑行走,
如果路徑在任何位置上出現相交的情況,也就是走到之前已經走過的位置,請回傳 True ;否則,回傳 False ,
題目鏈接:力扣:判斷路徑是否相交
示例 :
輸入:path = “NES”
輸出:false
解釋:該路徑沒有在任何位置相交
思路
根據題目去重,可以使用set()集合去重
①初始化集合與變數x,y
②在一個for回圈里,根據字符判斷x,y變化
③每次回圈,嘗試將變化后的x,y添加進set集合,若不成功,則表示已經出現過該(x,y)的坐標,路徑相交
java代碼:
class Solution {
public boolean isPathCrossing(String path) {
Set<String> set = new HashSet<>();
int x = 0,y=0;
set.add("0,0");
for(int i=0;i<path.length();i++){
switch(path.charAt(i)){
case 'N':y++;break;
case 'S':y--;break;
case 'E':x++;break;
case 'W':x--;break;
default : break;}
if(!set.add(x+ ","+ y)){
return true;
}
}
return false;
}
}
Python代碼:
class Solution:
def isPathCrossing(self, path: str) -> bool:
s = set()
x = 0
y = 0
s.add(tuple([0,0]))
for i in range(len(path)):
if path[i] == 'N':
y+=1
elif path[i] == 'S':
y-=1
elif path[i] == 'E':
x+=1
elif path[i] == 'W':
x-=1
else:
pass
if tuple([x,y]) in s:
return True;
else:
s.add(tuple([x,y]))
return False
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/231970.html
標籤:AI
