Я пытался найти хороший способ сделать это быстро, но я не уверен, что будет наиболее оптимальным, я надеюсь, что некоторые из вас, более опытные разработчики, могут помочь с вашими знаниями Data Structures :-)
По сути, у меня есть список путей (например, C: \ inetpub \ wwwroot \, C: \ www \ sites \ vhosts \ somesite.com \, D: \ www-mirror \ sites \ vhosts \ somesite.co. Великобритания), я должен проверить, что текущий файл, над которым я работаю (скажем, C: \ inetpub \ wwwroot \ styles \ style.css), существует в предварительно настроенном списке путей.
Итак, что я первоначально подумал, чтобы включить мой список элементов и сделать CurrentFilename.StartsWith (PreconfigureListOfPathsPathName). Но я перебираю список довольно регулярно, и он замедляется, поскольку список может содержать иногда 10, иногда 1000 (клиенты на сервере) путей.
Что бы вы предложили в качестве быстрого решения этой проблемы? Я пишу в C # 3.5, это только небольшой (но критический) раздел проекта.
Я думал о бинарных деревьях поиска, разбивая пути, а затем создавая древовидную карту и повторяя каждый путь. Но я не уверен, правильно ли это, так как у нас может быть много узлов.
D:\www-mirror\websites\vhosts\somesite.co.uk\
D:\www-mirror\websites\vhosts\somesite.com\
D:\www-mirror\websites\vhosts\somesite.org\
D:\www-mirror\websites\vhosts\somesite.pl\
Карта деревьев:
www-mirror->websites->vhosts->somesite* (has 4 nodes)
www-mirror->blah->woah->okay
Но это выглядит немного шатко.