华为oj 字符串通配符
来源:互联网 发布:sim800c gprs接收数据 编辑:程序博客网 时间:2024/05/19 18:15
本题,其实和分苹果的题有那么一丢丢的类似,在此提供两种能通过的解法(主要就是对于‘*’的处理)
1.这种解法其实是错误的,但是也要说说他的思路,对于 ‘*’ 他直接找 ‘*’ 下一个字符是否出现在需要匹配的串中,并且找到那个位置,认为此位置到之前就是‘*’所匹配的内容。
但是这种解法是错误的,在此给出一个测试用例
J*Smi??
JhonSSmith
至于为什么他能通过,oj太烂被!
#include<iostream>#include<string>using namespace std;int main(){string str1, str2;int i, j,len1,len2;cin >> str1 >> str2;len1 = str1.size();len2 = str2.size();i = j = 0;while (i < len1&&j < len2){if (str1[i] == '?'){i++;j++;}else if (str1[i] == '*'){i++;j=str2.find(str1[i], j);//这就是我上面思路中的关键语句if (j == string::npos){j = len2;}}else{if (str1[i] == str2[j]){i++;j++;}else{cout << "false";return 0;}}}if (i == len1 && j == len2)cout << "true";elsecout << "false";return 0;}
2.这种提供的方法,我认为是标准的解法,先看代码,再解释
#include <iostream>using namespace std;bool ISMatch(char *s1, char *s2, int p, int q){if (p<0 && q<0){return true;}if (p<0 || q<0){return false;}if (s1[p] == '*'){return ISMatch(s1, s2, p-1, q) || ISMatch(s1, s2, p, q-1);}if (s1[p] == s2[q] || s1[p] == '?'){return ISMatch(s1, s2, p-1, q-1);}return false;}int main(){char inStr[30];char matchStr[30];bool ret;gets_s(inStr);gets_s(matchStr);if (inStr == NULL || matchStr == NULL){cout << "false" << endl;return 0;}ret = ISMatch(inStr, matchStr, strlen(inStr) - 1, strlen(matchStr) - 1);if (ret){cout << "true" << endl;}else{cout << "false" << endl;}return 0;}解释:对于 ‘*’ 的处理,要么匹配0次,对应语句ISMatch(s1,s2,p-1,q),要么匹配多次ISMatch(s1,s2,p,q-1),对于递归截止条件,只有当p和q同时小于0,即都匹配完成时才算匹配成功!
0 1
- 华为oj 字符串通配符
- 华为oj 字符串通配符
- 华为OJ:字符串通配符
- 华为OJ:字符串通配符
- 华为OJ(字符串通配符)
- 华为OJ题库-字符串通配符
- 【华为OJ】【082-字符串通配符】
- 华为OJ 初级:字符串通配符
- 华为oj初级 字符串通配符
- Java算法--华为oj字符串通配符
- 华为OJ——字符串通配符
- 华为OJ——字符串通配符
- 华为oj_字符串通配符
- OJ---字符串通配符
- 字符串通配符(OJ)
- Huawei OJ-字符串通配符
- 华为机试---字符串通配符
- 华为OJ:字符串反转
- Android混淆打包
- 笔记:Linux常用命令(四)压缩解压缩命令
- 设计模式之组合模式
- tiny6410快速开发环境配置指南
- Android WebView中那些不得不解决的坑~~
- 华为oj 字符串通配符
- 机器学习之路——回归诊断
- 1003 Emergency
- 搞清楚 Python traceback
- 算法设计---优先队列与索引优先队列
- javascript 原型链等疑难答案
- Getting Ledger transactions in Ax 2012
- [vpn]SSLspeedy2与SSLspeedy4installonly
- POJ2886-Who Gets the Most Candies?-模拟约瑟夫环+反素数表(线段树上二分+爆搜打表)