給定乙個有序字串陣列,其中字串兩邊可能會插入若干個空串。實現乙個方法找到給定串的下標。
例子:輸入:[ "at", "", "", "", "ball", "", "", "car", "", "", "dad", "", "" ],"ball"輸出:4
輸入:[ "at", "", "", "", "ball", "", "", "car", "", "", "dad", "", "" ],"ballcar"輸出:-1
思路:用二分查詢的思想,但要針對空串做些額外的處理。用left、mid、right分表表示陣列的左、中、右。如果right對應的串為空串,繼續向前掃瞄直到找到第乙個非空串,然後求mid的值,如果mid對應的串為空串,繼續向右掃瞄直到找到第乙個非空串(因為right對應的非空串,所以mid最後一定會對應乙個非空串),然後進行比較,以此類推。當然也可以從left開始掃瞄直到找到第乙個非空串,然後求mid,如果mid對應的串為空串,繼續向左掃瞄直到找到第乙個非空串。
#include #include #include using namespace std;
int findstring(const vector& svec, const string& s)
return -1;
}int main()
相似的字串(hash 二分)
題意 給定長為n的字串s,要取出k個位置不相交的字串,取這k個串中任意兩個最長公共字首最小的最為 x 對所有符合條件的k,求出情況最大的x 樣例 思路 求相同字首匹配方式可以通過 進製hash 來處理,同時對於符合條件的長度,使用二分來優化時間複雜度。實際上這裡就運用了 字串hash值的方式,我們設...
D String Game 二分加字串匹配
題目鏈結 題目大意 給出字串str1,再第二行給出字串str2,第三行給出刪除str1中的字元的順序,用陣列a存,問最多按第三行的順序刪除str1中的字元剩下的字串中str2 我們定義l為a的左邊界,r為a的右邊界,mid為a的中 我們要求的是最多能刪除的字元數,那麼mid的值越大越好,所以首先判斷...
php字串與陣列的特殊情況
來看乙個特別的實驗 arr array a b c var dump isset arr 0 0 true print r arr 0 0 string a print r arr 1 0 string b 沒錯,arr命名是一維陣列上面 卻返回true 原因 還記得php中的字串可以用陣列的形式進...