Huawei OJ-字符串通配符
来源:互联网 发布:最赚钱的网络投资 编辑:程序博客网 时间:2024/05/19 18:46
C++源码
#include <iostream>
#include <string>
using namespace std;
bool function(string str1,int p,string str2,int q)
{
int i,j;
for(i=q;i<str2.size();i++)
{
int k=i;
for(j=p;j<str1.size();j++)
{
//判断遇到?的情况,如果恰为最后一位,则返回true,否则跳过此位,判断下一位
if(str1[j]=='?')
{
if(j==str1.size()-1)
return true;
k++;
continue;
}
//判断遇到*的情况,如果恰为最后一位,则返回true,否则递归匹配剩余子串
if(str1[j]=='*')
{
if(j<str1.size()-1)
j++;
else
return true;
bool flag=false;//剩余子串是否匹配成功
while(!flag)
{
while(k<str2.size() && str1[j]!=str2[k])
k++;
if(k==str2.size())//全部遍历完成仍然未匹配到相同字符,则返回失败
return false;
flag=function(str1,j,str2,k);
k++;//如果第一次整体匹配失败,则寻找下一个相同的字符
}
return true;
}
if(str1[j]!=str2[k])
break;
else
k++;
}
if(j==str1.size())
return true;
}
return false;
}
int main()
{
string str1,str2;
cin>>str1>>str2;
if(function(str1,0,str2,0))
cout<<"true";
else
cout<<"false";
return 0;
}
由于OJ平台只有一个用例,测试虽然通过,但不知道是否还有其他BUG,欢迎指正~
1 0
- Huawei OJ-字符串通配符
- 华为oj 字符串通配符
- 华为oj 字符串通配符
- OJ---字符串通配符
- 华为OJ:字符串通配符
- 华为OJ:字符串通配符
- 字符串通配符(OJ)
- 华为OJ(字符串通配符)
- 华为OJ题库-字符串通配符
- 【华为OJ】【082-字符串通配符】
- 华为OJ 初级:字符串通配符
- 华为oj初级 字符串通配符
- Java算法--华为oj字符串通配符
- 华为OJ——字符串通配符
- 华为OJ——字符串通配符
- Huawei OJ-人民币转换
- 字符串通配符
- 字符串通配符
- 蓝桥杯-未名湖边的烦恼-递归-java
- 回归
- c语言里缓冲区的理解
- POJ 2976 (最大化平均值)
- 逆序输出
- Huawei OJ-字符串通配符
- echarts中toolbox乱码问题
- glibc源码分析之进程启动(start.S)
- Openstack : 3、Openstack常用命令
- Xposed框架开发入门(三)--Android某输入法用户个人词库提取
- ZOJ 3953 Intervals (贪心/区间交)
- 分段函数
- Android开发之动画插值器的种类
- 分数求和