Leetcode PHP題解--D100 387. First Unique Character in a String

D100 387. First Unique Character in a String

題目連接

387. First Unique Character in a Stringphp

題目分析

返回給定字符串中第一個只出現了一次的單詞下標。
若沒有,則返回-1。數組

思路

把遇到的單詞存進兩個數組。優化

一個用來記錄只出現了一次的數組A,另外一個記錄出現了不僅一次的數組B。.net

遍歷每一個字母,噹噹前字母存在與數組B時,表明該字母出現了不止一次,那麼忽略便可。
當不存在於數組B,而存在於數組A時,說明當前字母是第二次出現。那麼從數組A中刪除,並存入數組B。
不然說明當前字母是第一次出現,直接存入數組A便可。code

最終,返回第一個數組A的值。leetcode

最終代碼

<?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%的提交。看來還有很大的優化空間。字符串

若以爲本文章對你有用,歡迎用愛發電資助。get

相關文章
相關標籤/搜索