乙個全字匹配的另類演算法

2021-04-12 15:53:28 字數 920 閱讀 4173

如果要從乙個字串中匹配某個指定字串(即查詢指定字串是否在某個字串中),那麼除了按字元逐個搜尋外,還有乙個另類通俗的演算法。下面請跟我來。

**如下(僅給出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...