leetcode中如何使用通配符
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,小编给大家分享一下leetcode中如何使用通配符,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!给定一个字符串 (s) 和
千家信息网最后更新 2025年02月03日leetcode中如何使用通配符
小编给大家分享一下leetcode中如何使用通配符,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
给定一个字符串 (s
) 和一个字符模式 (p
) ,实现一个支持 '?'
和 '*'
的通配符匹配。
'?' 可以匹配任何单个字符。
'*' 可以匹配任意字符串(包括空字符串)。
两个字符串完全匹配才算匹配成功。
说明:
s
可能为空,且只包含从a-z
的小写字母。p
可能为空,且只包含从a-z
的小写字母,以及字符?
和*
。
示例 1:
输入:
s = "aa"
p = "a"
输出: false
解释: "a" 无法匹配 "aa" 整个字符串。
示例 2:
输入:
s = "aa"
p = "*"
输出: true
解释: '*' 可以匹配任意字符串。
示例 3:
输入:
s = "cb"
p = "?a"
输出: false
解释: '?' 可以匹配 'c', 但第二个 'a' 无法匹配 'b'。
示例 4:
输入:
s = "adceb"
p = "*a*b"
输出: true
解释: 第一个 '*' 可以匹配空字符串, 第二个 '*' 可以匹配字符串 "dce".
示例 5:
输入:
s = "acdcb"
p = "a*c?b"
输入: false
解题思路:
1,通配符和正则表达式是两个东西,正则表达式用于字符串匹配,通配符用于shell编程
2,解题思路差不多,只是边界条件和状态转移方程不同
3,状态转移方程:
if p[j]==*{
//匹配1 个或者0个
a[i][j]=a[i][j-1] ||a[i-1][j]
}else{
a[i][j]=a[i-1][j-1]&&(s[i]==s[j]||s[j]=='?')
}
由于*可能匹配0个,考虑到p有*开头的情况,所以数组大小为len(s)+1,len(p)+1
func isMatch(s string, p string) bool {
if len(s) == 0 && len(p) == 0 {
return true
}
if len(p) == 0 {
return false
}
if len(s) == 0 {
for i := 0; i < len(p); i++ {
if []byte(p)[i] != '*' {
return false
}
}
return true
}
bs := []byte(s)
bp := []byte(p)
a := make([][]bool, len(s)+1)
for i := 0; i < len(s)+1; i++ {
a[i] = make([]bool, len(p)+1)
}
a[0][0] = true
//a[1:i][0]=false
//a[0][1:j]=a[0][j-1]&&b[j]=='*'
for j := 1; j < len(p)+1; j++ {
a[0][j] = a[0][j-1] && bp[j-1] == '*'
}
for i := 1; i < len(s)+1; i++ {
for j := 1; j < len(p)+1; j++ {
if bp[j-1] == '*' {
//0 1
a[i][j] = a[i][j-1] || a[i-1][j]
} else {
a[i][j] = a[i-1][j-1] && match(bs[i-1], bp[j-1])
}
}
}
return a[len(s)][len(p)]
}
func match(a, b byte) bool {
return a == b || b == '?'
}
以上是"leetcode中如何使用通配符"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
字符
字符串
输入
通配符
示例
解释
输出
篇文章
两个
内容
字母
小写
思路
方程
正则
状态
空字符
表达式
j++
不同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
安徽服务器回收哪家服务好
智慧党建软件开发专业制作
集团网络安全机制
精益软件开发 遵循计划
软件开发工期分配
五年级网络安全知识竞赛的内容
网络安全的四种路线
财政云软件开发
上海档案管理软件开发
数据库视图怎么清理
网上购物的网络安全保障
服务器 哪家好
应届生去银行软件开发
移动网络技术的影响
和软件开发大交到的文案
我国网络安全谁负责
ddos服务器黑了怎么办
甲骨文数据库有几种形态
动态数据存放在web服务器
吉林学英语软件开发公司哪个好
天擎终端安全管理平台数据库
ics网络安全
潞城软件开发项目管理
大学网络技术基础课程附录答案
数据库考试题及答案
上海档案管理软件开发
华为网络技术工程师职责
把图片存入服务器
西城区网络技术咨询职责
深圳戴尔服务器回收