多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > 面試10大算法題匯總-字符串和數(shù)組4

面試10大算法題匯總-字符串和數(shù)組4

來源:程序員人生   發(fā)布時間:2015-03-27 07:50:48 閱讀次數(shù):2452次

6.匹配正則表達(dá)式


編寫函數(shù)boolisMatch(String s, String p),完成正則表達(dá)式中“.”和“*”的功能。例:

isMatch("aa","a")return false

isMatch("aa","aa")return true

isMatch("aaa","aa")return false

isMatch("aa", "a*")return true

isMatch("aa", ".*")return true

isMatch("ab", ".*")return true

isMatch("aab", "c*a*b")return true

注:p的第1個字符不為*,且p中不會出現(xiàn)兩個*連接在1起的情況

 

可將問題分為以下幾種情況斟酌:

1.      p的長度為0:此時s的長度必須為0才匹配

2.      p的長度為1:若s的長度小于1,則必定不匹配。否則若p.charAt(0)不為“.”或與s不相等則不匹配

3.      p的長度>1:

此處罰兩種可能斟酌:I.p.charAt(1) != '*'

                                II.p.charAt(1) == ‘*

當(dāng)p.charAt(1) != '*'時,若s的長度小于1,則必定不匹配。比較s與p的第1個字符是不是匹配:若s與p的第1個字符不同且p的第1個字符不為”.”,則不匹配。否則迭代調(diào)用函數(shù),返回isMatch(s.substring(1),p.substring(1))

當(dāng)p.charAt(1) == '*'時,

。。。


PS:代碼有問題:

http://www.programcreek.com/2012/12/leetcode-regular-expression-matching-in-java/

比以下面代碼的測試就失敗了,暫時沒想到解決方法:

public class test { public static boolean isMatch(String s, String p) { // base case if (p.length() == 0) { return s.length() == 0; } // special case if (p.length() == 1) { // if the length of s is 0, return false if (s.length() < 1) { return false; } //if the first does not match, return false else if ((p.charAt(0) != s.charAt(0)) && (p.charAt(0) != '.')) { return false; } // otherwise, compare the rest of the string of s and p. else { return isMatch(s.substring(1), p.substring(1)); } } // case 1: when the second char of p is not '*' if (p.charAt(1) != '*') { if (s.length() < 1) { return false; } if ((p.charAt(0) != s.charAt(0)) && (p.charAt(0) != '.')) { return false; } else { return isMatch(s.substring(1), p.substring(1)); } } // case 2: when the second char of p is '*', complex case. else { //case 2.1: a char & '*' can stand for 0 element if (isMatch(s, p.substring(2))) { return true; } //case 2.2: a char & '*' can stand for 1 or more preceding element, //so try every sub string int i = 0; while (i<s.length() && (s.charAt(i)==p.charAt(0) || p.charAt(0)=='.')){ if (isMatch(s.substring(i + 1), p.substring(2))) { return true; } i++; } return false; } } public static void main(String[] args) { System.out.println(isMatch("12", "1*12")); } }



生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 福利视频第一区 | 免费看黄大全 | 欧美一级乱妇老太婆特黄 | 亚洲一区二区三区麻豆 | 在线国产毛片 | 午夜影院美女 | 性做久久久久久久 | 日韩高清无砖砖区2022 | 在线观看www. | 亚洲成a人片在线观看www流畅 | 国产一区二区高清在线 | 中文字幕精品视频在线 | 国产真实乱小说 | 亚州精品一区二区三区 | 国产精品视频自拍 | 日本aaaaa特黄毛片 | 国产无限资源在线观看 | 黄色小说校园春色 | 久久久久国产成人精品 | 亚洲欧美专区精品久久 | 久久久精品久久久久久 | 亚洲欧洲成人 | 亚洲欧美久久精品 | 三级国产精品一区二区 | 日本一二三区在线视频 | 国产午夜亚洲精品久久www | 亚洲国产成人久久一区二区三区 | 色黄污在线看黄污免费看黄污 | 亚洲国产日韩欧美综合久久 | 伊人影院综合 | 亚洲女人被黑人巨大进入 | 俺来色 | 亚洲精品久久久久久久久久ty | 亚洲欧美a | 伊人网大| 欧美天天性影院 | 日本无卡码高清免费观看 | 激情综合色综合久久综合 | 日本大臿亚洲香蕉大片 | 国产精品深夜福利免费观看 | 亚洲欧美国产精品专区久久 |