字符串通配(动态规划java)
来源:互联网 发布:javascript对象是什么 编辑:程序博客网 时间:2024/05/18 03:55
1、牛客网题目:
题目描述
对于字符串A,其中绝对不含有字符’.’和’*’。再给定字符串B,其中可以含有’.’或’*’,’*’字符不能是B的首字符,并且任意两个’*’字符不相邻。exp中的’.’代表任何一个字符,B中的’*’表示’*’的前一个字符可以有0个或者多个。请写一个函数,判断A是否能被B匹配。
给定两个字符串A和B,同时给定两个串的长度lena和lenb,请返回一个bool值代表能否匹配。保证两串的长度均小于等于300。
测试样例:
"abcd",4,".*",2
返回:true
2、思想分析:
2.1、默认已经建立动态数组dynamic[lena+1][lenb+1];且 dynamic[0[0]=true;
2.2、dynamic[i][j]表示:将字符串B.subString(0,j)转为A.subString(0,i)是否可能。
2.3、dynamic[i][j]的取值根据B的当前比较字符,即B.charAt(j-1),有3种判定情况:
2.3.1、当B.charAt(j-1)=='*'时,B可以通过添加一个字符和A相同,此时dynamic[i][j]值和dynamic[i-1][j]相同;
B也可以通过不添加字符A相同,此时dynamic[i][j]值和dynamic[i][j-1]相同;
2.3.2、当B.charAt(j-1)=='.'时,此时dynamic[i][j]值和dynamic[i-1][j-1]相同;
2.3.3、当B.charAt(j-1)为字符时,dynamic[i][j]=dynamic[i-1][j-1] && B.chartAt(j-1)==A.chartAt(i-1)
3、code:已a
package schooloffer;/** * Created by caoxiaohong on 17/10/27. * 对于字符串A,其中绝对不含有字符’.’和’*’。再给定字符串B,其中可以含有’.’或’*’,.... * 动态规划 */public class WildMatch { public boolean chkWildMatch(String A, int lena, String B, int lenb) { // write code here boolean[][] dynamic = new boolean[lena + 1][lenb + 1]; dynamic[0][0] = true; for (int i = 1; i < lena + 1; i++) { for (int j = 1; j < lenb + 1; j++) { if (B.charAt(j - 1) == '*') { dynamic[i][j] = dynamic[i - 1][j] || dynamic[i][j-1];//添加1个字符 || 添加0个字符 } else if (B.charAt(j - 1) == '.') { dynamic[i][j] = dynamic[i - 1][j - 1]; } else { dynamic[i][j] = A.charAt(i - 1) == B.charAt(j - 1) && dynamic[i - 1][j - 1]; } } } return dynamic[lena][lenb]; } public static void main(String[] args) { WildMatch t=new WildMatch(); System.out.println(t.chkWildMatch("abcd",4,".*",2)); }}
阅读全文
0 0
- 字符串通配(动态规划java)
- 字符串通配
- [编程题]字符串通配
- 字符串通配(正则表达式)
- string.xml中字符串通配
- 字符混编---动态规划
- 数字三角形&&添加回文串&&最短排序&&字符串通配
- 动态规划之字符编码
- 动态规划之字符编码
- 数据结构作业串通配符匹配问题
- 数据结构之串通配符匹配
- POJ2479 Java 动态规划
- 动态规划(java)
- java 动态规划
- 动态规划java
- Java数据结构动态规划
- 动态规划---求最长公共字符序列
- Henry捡钱 Java 动态规划
- 递归二分法查找
- 超全面Mysql单表操作(内附面试题)
- 谈谈扩容术
- Fatal error in gc GetThreadContext failed bug 异常。
- 防雪崩利器:熔断器 Hystrix 的原理与使用
- 字符串通配(动态规划java)
- Elasticsearch Recovery详解
- 背包问题
- 获取追踪占位点
- 虚拟化-内存虚拟化
- Apache配置支持流媒体服务
- Python编程:从入门到实践的动手试一试答案(第四章)
- mxnet : parameter-server/ps-lite阅读既要
- JVM原理及调优