题解 | #正则表达式匹配#

正则表达式匹配

http://www.nowcoder.com/practice/28970c15befb4ff3a264189087b99ad4

using namespace std;
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * @param str string字符串 
     * @param pattern string字符串 
     * @return bool布尔型
     */
    bool match(string str, string pattern) {
        // write code here
        int i = str.size()-1;
        int j = pattern.size() - 1;
        cout<<i<<endl;
        cout<<j<<endl;
       while(i >= 0 && j >= 0){
           if(str[i] == pattern[j]){
               i--;
               j--;
           }else if(pattern[j] == '.'){
               i--;
               j--;
           }else if(pattern[j] == '*' && pattern[j-1] == str[i]){
               i -= 1;
               j -= 2;
               while(pattern[j] == '*' && pattern[j-1] != str[i] && str[i] == str[i+1]){
                   j = j - 2;
                   while(pattern[j] == str[i+1]){
                       j -= 1;
                   }
                   while(str[i] == str[i+1]){
                       i -= 1;
                   }
               }
               while(str[i] == pattern[j] && str[i] == pattern[j+1]){
                   i -= 1;
                   j-= 1;
               }
               while(str[i] != pattern[j] && str[i] == pattern[j+1]){
                   i--;
               }
             
           }else if(pattern[j] == '*' && pattern[j-1] == '.'){
               j -= 2;
               if(str[i] != pattern[j]){
                   i--;
               }
               while(str[i] != pattern[j] && str[i+1] == str[i]){
                   i--;
                  
               }
               if(str[i] != pattern[j]){
                   i--;
               }
           }else if(pattern[j] == '*' && pattern[j-1] != str[i] && pattern[j-1] != '.'){
               j -= 2;
              
           }
           else{
               return false;
           }
               
       }
       while(j >= 0){
           if(pattern[j] == '*'){
               j -= 2;
           }
           else{
               return false;
           }
       }
       if(i >= 0 ){
          return false;
       }
        return true;
    
    }
};
全部评论

相关推荐

昨天 18:49
同济大学 设计
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务