如果要從乙個字串中匹配某個指定字串(即查詢指定字串是否在某個字串中),那麼除了按字元逐個搜尋外,還有乙個另類通俗的演算法。下面請跟我來。
**如下(僅給出delphi的實現):
functionsearchstr(bestr, substr:
string
): integer;
var
oldlength: integer;
tempstr:
string
;begin
oldlength :
=length(bestr);
tempstr :
=stringreplace(bestr, substr, '|
', [rfreplaceall]);
iflength(tempstr)
<
oldlengththen
begin
result :
=pos('|
', tempstr);
end
else
begin
result :=-
1;end;
end;
首先,取得要被搜尋的字串(這裡為bestr)的長度
接著,使用stringreplace函式將需要搜尋的字串bestr中指定字串(這裡為substr)替換為特殊的表示符(這裡使用了「|」
最後,判斷替換後的字串是否發生了變化,如果變化說明存在相關匹配,可以使用pos函式來定位此匹配。
這個演算法避免了繁雜的字元搜尋和位置計算。
每天乙個演算法 全排列演算法
全排列演算法 給出乙個有n個元素的集合,求出這個集合所有可能的排列。一 遞迴的方法 void permutation char arr,int k int m cout 二 stl實現 有時候遞迴的效率使得我們不得不考慮除此之外的其他實現,很多把遞迴演算法轉換到非遞迴形式的演算法是比較難的,這個時候...
乙個演算法題 括號匹配問題。
問 給予乙個字串為 請寫出程式求出其有多少對 一般這種問題都是想讓你通過資料結構去處理,仔細回想一下我們學過的資料結構,棧的先進後出是否能處理這個問題?將字串遍歷,遇到左方括號 時將其壓入棧中,遇到右方括號 時取出棧頂元素匹配,並將對數加1,這樣最後我們就求出來能有多少對方括號了。棧的示意圖 流程圖...
Android螢幕適配的乙個另類方法
關於android手機螢幕適配,我至今沒找到乙個合適的方法.於是自己想了乙個歪招。原理也比較簡單,例如大多手機的標準解析度是1920 1080或1280 720 但是遇到1800 1080或1184 720的就麻煩了 何況有些手機還有虛擬按鍵狀態列 其實也簡單,把1800當1920來用,1184當1...