Re: Конечный автомат это круто, но оно надо?
От: Аноним  
Дата: 19.04.04 17:55
Оценка:
Может по-простому, циферка за циферкой? В полтора раза быстрее работает, судя по твоим же тестам. VC 7.1 Release, Optimize speed.
bool isValidIP(const char* ip)
{
    if (!ip)
        return false;

    for (int j = 0 ; j < 4 ; ++j)
    {
        int i = 0;
        while (i < 3 && ip[i] && ip[i] != '.')
            ++i;

        char limit = '9';
        switch(i)
        {
        case 3:
            if (*ip < 0 || *ip > '2')
                return false;
            if (*ip == '2')
                limit = '5';
            ++ip;
        case 2:
            if (*ip < 0 || *ip > limit)
                return false;
            if (*ip < limit)
                limit = '9';
            ++ip;
        case 1:
            if (*ip < 0 || *ip > limit)
                return false;
            ++ip;
            break;
        case 0:
            return false;
        }
        if (j < 3 && *ip++ != '.')
            return false;
    }
    return *ip == '\0';
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.