В последние несколько лет компании пытаются всё подключить к Интернету, от дверных звонков и фотокамер, до машин. И с этим есть несколько проблем.
В наше время каждый маленький кусочек технологии пытается быть подключенным к интернету. Обычно это предлагается большими, а не такими уж большими компаниями как некий вид удобства, чтобы вы могли контролировать всё отовсюду. Такой подход имеет свои плюсы, но и минусы тоже. Блестящее технологическое будущее, полностью подключенное к сети, не кажется мне таким привлекательным, как нам говорят.
Я не эксперт в японской фонетике, просто люблю учить новые вещи, как, например, японский язык. Так что это просто то, как я воспринимаю язык. Кроме того, все упрощено до уровня, когда это может быть понято всеми.
В японском языке существует два типа прилагательных: и-прилагательные и на-прилагательные. Типы названы по звуку, который соединяет прилагательное и существительное. Эти два типа интересны тем, что они склоняются по-разному. На-прилагательные ведут себя больше как существительные, а и-прилагательные имеют свой собственный путь.
На моих собеседованиях по программированию я часто использую упрощенную версию этой задачи с Leetcode.
Даны две строки s и p, вернуть true, если s содержит анаграмму p.
Мне нравится эта задача, потому что решение можно постепенно улучшать, и есть много чего обсудить. От алгоритмической сложности до оптимизации на уровне кэша процессора. Здесь я хочу рассказать, как решил эту задачу в первый раз.
Первое решение, которое приходит в голову: давайте создадим список всех возможных
анаграмм, а затем просто проверим, есть ли одна из них в строке s. Звучит просто,
не так ли? Но есть несколько проблем с этим подходом. Во-первых, реализация эффективного алгоритма
для генерации всех возможных перестановок уже является достаточно сложной задачей. А во-вторых, временная сложность
итогового решения будет примерно O(s*p!). Факториал растет очень быстро: 3! == 6,
5! == 120, 10! == 3,628,800, и вы не захотите с этим иметь дело.