使用hash法高效替換多個字元

2021-08-01 18:46:22 字數 566 閱讀 6668

在專案中經常要遇到要對字串中的特殊的字元進行替換,例如字串中如果多了個回車鍵、換行符或是製表符,那麼將該string寫成行表形式的資料時,該行資料將不能滿足需求。而如果替換過程中,不注意演算法的設計,替換的時間複雜度將很高。本文介紹使用hash的方式,以空間的浪費的代價來換取替換時間的降低,使得時間複雜度達到o(n).

假設待替換的字元為\t,\r,\n,要將他們替換為*。方法是,將待替換的字元對映到hash中(以vector實現,vector下標為字元的ascii碼)。替換時,遍歷字串的每個字元,以hash的方式判斷該字元是否在待替換的字元表中。

此次還用到乙個特性,就是 char ch = 9;與 char ch = 『\t』;定義效果一樣。

示例**

#include 

#include

#include

using

namespace

std;

void hashrepalce(vector

vecchs,string &str)

}}int main()

匹配多個字元

匹配多個字元的相關格式 字元功能 匹配前乙個字元出現0次或者無限次,即可有可無 匹配前乙個字元出現1次或者無限次,即至少有1次 匹配前乙個字元出現1次或者0次,即要麼有1次,要麼沒有 匹配前乙個字元出現m次 匹配前乙個字元出現從m到n次 需求 匹配出,乙個字串第乙個字母為大小字元,後面都是小寫字母並...

python替換多個字串的方法

參考 import re a 123 n b re.sub r s a print b 最後輸出結果為 123 解釋一下這個正規表示式的意思 r s 1 r指明這是乙個正規表示式 2 內是乙個字符集,字符集內的字元任何乙個被匹配,都算匹配成功,比如r a bcd e 可以匹配到 abe ace ad...

正則 多個字元匹配

正規表示式 二 匹配多個字元 元字元 量詞符號 import re 1 匹配0個或者1個a print re.findall a?b abbzab abb aab 2 匹配1個或者多個a print re.findall a b b ab aaaaaab abb 3 匹配0個或者多個a print ...