bool WildcardCompare(LPCWSTR pFilter, LPCWSTR pString) { while (*pString && *pFilter != L'*') { if (*pFilter != *pString && *pFilter != L'?') return false; ++pFilter; ++pString; } LPCWSTR pBaseFilter; LPCWSTR pBaseString; while (*pString) { if (*pFilter == L'*') { if (!*++pFilter) return true; pBaseFilter = pFilter; pBaseString = pString; } else if (*pFilter == *pString || *pFilter == L'?') { ++pFilter; ++pString; } else { pFilter = pBaseFilter; pString = ++pBaseString; } } while (*pFilter == L'*') ++pFilter; return !*pFilter; }
11 April, 2009
Wildcard comparer
Все наверное писали что-то подобное на тестах при поступлении на работу. И вот свершилось, wildcard comparer реально потребовался. Особенности алгоритма: несколько следующих друг за другом * считаются одной.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment