從字串string開始完整匹配子串sub,返回匹配到的字元個數。
sub中如果出現'?'表示可以匹配一到三個除'\0'以外的任意字元。
如果sub還有找不到匹配的字元,則說明不能完整匹配。
如果能完整匹配,返回匹配到的字元個數,如果有多種匹配方式,返回匹配字元數最少的那個,如果不能完整匹配,返回-1
輸入描述:
第一行輸入字串string,長度小於10000輸出描述:第二行輸入子串sub,長度小於100
從string開頭位置完整匹配sub,匹配到的字元個數。示例1
abcdefga?c
3示例2
aabcddefga?c
4示例3
aabcddefgb?e
-1示例4
aabcddefga?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...