28 lines
603 B
Rust
28 lines
603 B
Rust
|
use std::collections::HashSet;
|
||
|
|
||
|
impl Solution {
|
||
|
pub fn is_path_crossing(path: String) -> bool {
|
||
|
let mut visited = HashSet::from([(0, 0)]);
|
||
|
|
||
|
let mut x = 0;
|
||
|
let mut y = 0;
|
||
|
for d in path.chars() {
|
||
|
match d {
|
||
|
'N' => y -= 1,
|
||
|
'S' => y += 1,
|
||
|
'E' => x += 1,
|
||
|
'W' => x -= 1,
|
||
|
_ => unreachable!("invalid direction"),
|
||
|
}
|
||
|
|
||
|
if visited.contains(&(x, y)) {
|
||
|
return true;
|
||
|
}
|
||
|
visited.insert((x, y));
|
||
|
}
|
||
|
|
||
|
false
|
||
|
}
|
||
|
}
|
||
|
|