Регулярное выражение (шарик) дерево поиска

Как вы знаете, Float имеет только 24-битовое значение, поэтому 32-битное значение 0xFFFFFFFF будет усечено. Итак, Swift предупреждает вас, что Float не может точно представлять значение 0xFFFFFFFF.

Краткое исправление было бы примерно таким:

let randomValue: CGFloat = CGFloat(Float(arc4random()) / Float(0xFFFFFFFF))

При использовании Float.init в явном виде Swift не будет генерировать такие предупреждения.


Но предпочтительным способом было бы использовать метод random(in:), как предложено в ответе Мэтта:

return CGFloat(Float.random(in: from...to))

или просто:

return CGFloat.random(in: from...to)
5
задан Kris Braun 25 February 2009 в 19:03
поделиться

1 ответ

aho-corasick дерево поиска отвечало бы всем требованиям. Aho-Corasick очень хорошая статья об этом виде вещи Попытки и реализация, используемая в Эволюции для замены regex ищущий Etrie

Править: Чтобы сделать целое сопоставление строк, можно добавить начало и конечные состояния привязки при сканировании много данных строки, Вы могли добавить новую строку, чтобы начаться и закончиться. Вы могли также удалить часть, где она добавляет крест, связывающийся для частичного соответствия, начинающего другой матч, это также позволяет более быстрое исключение.

Другим алгоритмом для проверки членство в строковом наборе является CritBit. Это не имеет Regex, но этого простым и тестирует полные строки.

9
ответ дан 14 December 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: