Рубрики
Uncategorized

Проблема с PHP-кодом Leetcode — D100 387. Первый уникальный символ в строке

Автор оригинала: David Wong.

Ссылки на Темы

387. Первый уникальный символ в строке

Анализ темы

Возвращает первый подстрочный индекс слова, который появляется только один раз в данной строке. Если нет, вернитесь к – 1.

размышляющий

Сохраните слова, с которыми вы сталкиваетесь, в двух массивах.

Одна запись содержит массив A, который появляется только один раз, а другая запись содержит массив B, который появляется более одного раза.

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

Наконец, возвращается значение первого массива A.

Окончательный код

php
class Solution {

    /**
     * @param String $s
     * @return Integer
     */
    function firstUniqChar($s) {
        $s = array_filter(str_split($s));
        $a = [];
        $b = [];
        foreach($s as $k => $v){
            if(!isset($b[$v])){
                if(isset($a[$v])){
                    unset($a[$v]);
                    $b[$v] = $k;
                }
                else{
                    $a[$v] = $k;
                }
            }
        }
        return count($a) ? current($a) : -1;
    }
}

Однако этот код превысил только 33,33% представленных материалов. Похоже, здесь есть много возможностей для оптимизации.

Если вы считаете, что эта статья полезна для вас, вы можете воспользоваться Фондом генерации энергии Ии.