https://leetcode.com/problems/path-crossing/description/ Easy

Условие

Дана строка path, где path[i] = 'N', 'S', 'E' или 'W', каждый символ означает перемещение на одну единицу:

N — на север,

S — на юг,

E — на восток,

W — на запад.

Вы начинаете в точке (0, 0) на плоскости и следуете маршруту, заданному строкой path.

Вернуть true, если в какой-то момент вы окажетесь в точке, которую уже посещали (маршрут пересекает сам себя), иначе — false.

Решение

class Solution {
    fun isPathCrossing(path: String): Boolean {
        var x = 0
        var y = 0
        val visited = mutableSetOf<Pair<Int, Int>>()
        visited.add(0 to 0)
        for (c in path) {
            when (c) {
                'N' -> y++
                'S' -> y--
                'E' -> x++
                'W' -> x--
            }
            if (!visited.add(x to y)) return true
        }
        return false
    }
}