Python題解
# -*- coding:utf-8 -*-
class Solution:
# s, pattern都是字符串
def match(self, s, pattern):
def matchCore(s, i, pattern, j):
if i == len(s) and j == len(pattern):
return True
if i != len(s) and j == len(pattern):
return False
if j+1 < len(pattern) and pattern[j+1] == "*":
#模式第二個字符是*,且字符串與模式首字符相等,再往下分三種情況;否則,模式後移2位
if (i != len(s) and pattern[j] == s[i]) or (pattern[j] == "." and i != len(s)):
#1.匹配一個 2.匹配一個,後面繼續匹配 3.不匹配
return matchCore(s, i+1, pattern, j+2) \
or matchCore(s, i+1, pattern, j) \
or matchCore(s, i, pattern, j+2)
else:
return matchCore(s, i, pattern, j+2)
if (i != len(s) and pattern[j] == s[i]) or (pattern[j] == "." and i != len(s)):
return matchCore(s, i+1, pattern, j+1)
return False
i, j = 0, 0
return matchCore(s, i, pattern, j)
考點
- 考查對字符串的編程能力;
- 考查對正則表達式的理解;
- 考查思維的全面性。要全面考慮普通字符、".“和”*“並分析它們的匹配模式。在測試階段,要充分考慮普通字符、”.“和”*"三者的排列組合,儘量完備的想出所有可能的測試用例。