Open carloscn opened 1 year ago
使用元组来表示->x,y, 根据上下左右来操作元组的值,操作下来之后和start相等,那么就返回true
pub fn is_path_crossing(path: String) -> bool
{
if path.len() < 1 {
return false;
}
let mut point:(i32, i32) = (0,0);
let path_vec:Vec<char> = path.chars().collect();
for e in path_vec {
if e == 'N' || e == 'n' {
point.1 += 1;
} else if e == 'S' || e == 's' {
point.1 -= 1;
} else if e == 'W' || e == 'w' {
point.0 -= 1;
} else if e == 'E' || e == 'e' {
point.0 += 1;
} else {
return false;
}
if (0, 0) == point {
return true;
}
}
return false;
}
问题描述
给你一个字符串 path,其中 path[i] 的值可以是 'N'、'S'、'E' 或者 'W',分别表示向北、向南、向东、向西移动一个单位。
你从二维平面上的原点 (0, 0) 处开始出发,按 path 所指示的路径行走。
如果路径在任何位置上与自身相交,也就是走到之前已经走过的位置,请返回 true ;否则,返回 false 。
示例 1:
输入:path = "NES" 输出:false 解释:该路径没有在任何位置相交。
示例 2:
输入:path = "NESWW" 输出:true 解释:该路径经过原点两次。
提示:
1 <= path.length <= 104 path[i] 为 'N'、'S'、'E' 或 'W'
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/path-crossing