字串匹配問題

2021-10-24 16:23:55 字數 1084 閱讀 2276

字串匹配問題

對於字串str,其中絕對不含有字元』.』和『』。再給定字串exp,其中可以含有』.』或』『』,』』字元不能是exp的首字元,並且任意兩個』『字元不相鄰。exp中的』.』代表任何乙個字元,exp中的』**』表示』*『的前乙個字元可以有0個或者多個。請寫乙個函式,判斷str是否能被exp匹配(注意:輸入的資料不保證合法,但只含小寫字母和『.』和『』)。

輸入描述:

輸入包含兩行,兩個字串,分別代表str和exp(1≤

leng

thex

p,le

ngth

str≤

300)

(1\leq length_,length_\leq300)

(1≤len

gthe

xp​,

leng

thst

r​≤3

00)

輸出描述:

如果str是能被exp匹配,請輸出「yes」,否則輸出「no」。

示例1輸入

abc

abc

輸出
yes
示例2

輸入

abcd

.*

輸出
yes
題解:

有點麻煩的動態規劃。假設用狀態 f[i,j] 表示 s[0…i) 與 p[0…j) 是否匹配,有以下幾個轉換狀態:

若 p[j-1] 等於 「*」,分情況討論:

**:

#include

#include

#include

using

namespace std;

const

int n =

310;

char s[n]

;char p[n]

;int

main

(void

)else}}

puts

(f[ls]

[lp]

?"yes"

:"no");

return0;

}

字串匹配問題

在字串匹配問題中,我們期待察看串t中是否含有串p。其中串t被稱為目標串,串s被稱為模式串。進行字串匹配,最簡單的乙個想法是 public class match 可以看見,這個演算法 假定m n 的複雜度是o mn 其中m是t的長度,n是p的長度。這種演算法的缺陷是匹配過程中帶有回溯 準確地說是t串...

字串匹配問題

給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。輸入輸入的第一行包含乙個字串s,由大小寫英文本母組成。第二行包含乙個數字,表示大小寫敏感的選項,當...

字串匹配問題

字串中只含有括號 判斷輸入的字串中括號是否匹配。如果括號有互相包含的形式,從內到外必須是 例如。輸入 輸出 yes,而輸入 都應該輸出no。第一行為乙個整數n,表示以下有多少個由括好組成的字串。接下來的n行,每行都是乙個由括號組成的長度不超過255的字串 在輸出中有n行,每行都是yes或no。5 y...