読者です 読者をやめる 読者になる 読者になる

Search Non ASCII with bytes

prog

ASCII Compatible な encoding の文字列に、ASCII 文字以外が含まれているかどうか検索するという問題。Ruby においては ASCII のみの文字列は ASCII 互換 encoding の文字列と結合できるので重要な問題です。

普通に書くと以下のようになるでしょうか。しかし、これでは 1000 文字を 100 万回調べるのに 160 秒ほどかかってしまいました。

int
search_nonascii_bytes(const char* p, const char *e)
{
    for (; p < e; ++p) {
	if (!isascii(*p)) return p;
    }
    return NULL;
}