深信服2019春招筆試 子串模糊匹配

2021-09-25 20:50:04 字數 2005 閱讀 1825

從字串string開始完整匹配子串sub,返回匹配到的字元個數。

sub中如果出現'?'表示可以匹配一到三個除'\0'以外的任意字元。

如果sub還有找不到匹配的字元,則說明不能完整匹配。

如果能完整匹配,返回匹配到的字元個數,如果有多種匹配方式,返回匹配字元數最少的那個,如果不能完整匹配,返回-1

輸入描述:

第一行輸入字串string,長度小於10000

第二行輸入子串sub,長度小於100

輸出描述:

從string開頭位置完整匹配sub,匹配到的字元個數。
示例1

abcdefg

a?c

3
示例2

aabcddefg

a?c

4
示例3

aabcddefg

b?e

-1
示例4

aabcddefg

a?d

5
# 思路:

# 採用正規表示式做。

# 0、先考慮題目的要求兩個字串的長度不能超出範圍,否則返回-1。

# 1、用「(.*?)」替換待匹配的短字串中的「?」,然後編譯生成乙個正規表示式物件;

# 2、用生成的正規表示式物件去匹配長字串,得到匹配結果result;

# 3、如果result不等於none則呼叫分組函式group()乙個個遍歷表示「?」的分組「(.*?)」的匹配長度是否滿足要求,

# 只要有乙個不滿足就返回-1

# 都滿足就返回result的長度

# 4、如果3沒有返回則返回-1。

import re

class solution():

def return_re_length(self, first_str, second_str):

if len(first_str) > 10000 or len(second_str) > 100:

return -1

second_str_re = second_str.replace("?","(.*?)")

t=second_str.replace("?","")

print('t:',t)

number_wenhao = len(second_str) - len(second_str.replace("?",""))

print('num:',number_wenhao)

try:

pattern = re.compile(r'{}'.format(second_str_re))

res = pattern.match(first_str)

print('res.group(1)',res.group(1))

print('res.group(2)',res.group(2))

for i in range(1,number_wenhao+1):

if len(res.group(i)) == 0 or len(res.group(i)) > 3:

return -1

return len(res.group(0))

except:

return -1

# if res != none:

# for i in range(1,number_wenhao+1):

# if len(res.group(i)) == 0 or len(res.group(i)) > 3:

# return -1

# return len(res.group(0))

# return -1

s1 = input()

s2 = input()

test = solution()

print(test.return_re_length(s1, s2))

2020春招深信服筆試面試經驗

下面記錄的是2020年春招深信服的一些經過。深信服大致春招流程 網申 簡歷篩選 筆試 技術一面 技術二面 hr面試 offer 筆試題目 8道不定項選擇,7道填空,三道程式設計題,考兩小時 不定項選擇 填空主要考的是資料結構 作業系統和一些數學問題 會考正規表示式 malloc 排序的時間複雜度等。...

2018秋招深信服筆試面試 經驗

今天的我是一顆冉冉公升起的新星,未來是我的,世界也是我的。好,希望以後我也能有這樣的心態。好吧,先介紹一下,我是乙個非985 211的軟體工程系的本科生 現在大四未畢業在找工作,這次的應聘的崗位是c c 軟體研發 2018深信服秋招筆試 不記得所有的題了 1 程序a以讀寫的方式open乙個檔案m,f...

深信服筆試 字串變換

題目描述 給出乙個數字組成的字串s及n個數字變換 a,b 每個變換 a,b 是將字串裡面的數字a變換成數字b,如果字串裡面不存在數字a,則不做變換。輸出全部操作完後的字串 注 請注意演算法執行效率。輸入描述 第一行一串0 9組成的字串s 第二行乙個整數n 第三行開始的n行每行是兩個數a b代表數字a...