美文网首页
2017.5.15学习总结

2017.5.15学习总结

作者: 方木Rudy | 来源:发表于2017-05-16 00:43 被阅读0次

LeetCode10

'.' Matches any single character.
'*' Matches zero or more of the preceding element.

The matching should cover the entire input string (not partial).

The function prototype should be:
bool isMatch(const char *s, const char *p)

Some examples:
isMatch("aa","a") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa", "a*") → true
isMatch("aa", ".*") → true
isMatch("ab", ".*") → true
isMatch("aab", "c*a*b") → true

这里s是要匹配的字符串,p是带有“ . ”和“ * ”的匹配串。
这道题可以用递归和DP解决,主要难点是需要考虑的情况比较多,直接上代码(递归写法)

bool isMatch(string s, string p) {

     if (p.empty())    
        return s.empty();  //如果p和s都完全匹配 则返回 
        if ('*' == p[1])
        {    
            /*考虑出现aaa  a*ab这种情况  对a*后面的进行递归验证(aa  a*也一样,只不过他们substr(2)等于空) 
            相当于返回递归出口  
            */
            if(isMatch(s, p.substr(2)))  
                  return true;
                 
            if(!s.empty())
            {
                if((s[0] == p[0] || '.' == p[0]))    //考虑:aab a* 
                      return isMatch(s.substr(1), p);
                else
                  return false;
            }
            else
                return false;
            
        }
        else
        {
            if(!s.empty())              //考虑:aaa  aab 
            {
                if((s[0] == p[0] || '.' == p[0]))
                {
                   return isMatch(s.substr(1), p.substr(1));
                }
                else
                  return false;
            }
            else
              return false;
        }
    }

如注释:
总体按照p[1]是否为“ * ”进行分类:

  1. p[1]==‘ * ’:* >=1进行递归,同时考虑跳过 * 匹配成功的情况,返回true
  2. p[1]!=‘ * ’ :比较简单,直接依次判断每个字符是否相等

LeetCode11

题意:在二维坐标系中,(i, ai) 表示 从 (i, 0) 到 (i, ai) 的一条线段,任意两条这样的线段和 x 轴组成一个木桶,找出能够盛水最多的木桶,返回其容积。
解析:暴力肯定不可以,会超时。这里主要判断那些可以省略计算的地方。
举个例子:5 9 8 4 2,如果5和2进行计算,以2为标准,且5和2的距离最远,所以计算后2不用再和9 8 4计算,因为结果肯定比前一次结果小(要么比2小,要么距离更近),所以只需O(n)时间便可以解出,代码如下:

 int maxArea(vector<int>& height) {
     int l=0;
     int size=height.size();
     int r=size-1;
     int max=0;
    while(l<r)
    {
        int v=min(height[l],height[r])*(r-l);
        if(v>max)
           max=v;
           
        //cout<<max<<" ";
        if(height[l]<height[r])
           l++;
        else
          r--;
    }
    return max;
        
    }

Android开发艺术探索

Android中的IPC方式

相关文章

  • 2017.5.15学习总结

    LeetCode10 这里s是要匹配的字符串,p是带有“ . ”和“ * ”的匹配串。这道题可以用递归和DP解决,...

  • 2017.5.15

    其实你的想法很偏激,这是你的自带属性,你是个很有个性,也非常好的人,我曾经很想和你在一起,很想吐露我全部的心事,但...

  • 2017.5.15

    天气晴朗 惠风和畅 请你迎着阳光 颔首,且微笑 赴今日之约

  • 2017.5.15

    1.今天穿的衣服是毕业典礼穿的衣服,也是第一次来南邮穿的衣服。 2.又一个四季在轮回,而我一无所获的坐在街头,只有...

  • 2017.5.15

    刚刚看了朋友圈 表弟家里买了个代步给表弟当玩具 表弟年纪小 还没上小学 怎么说 五味杂陈吧 虽然是这么近的亲戚 但...

  • 2017.5.15

    总结火龙果培训的教材即笔记。架构设计的理论高度有点高,很多东西不是太明白。但是关于数据库建模的方法和TDD测试驱动...

  • 2017.5.15

    有时候,想要努力,就是看见别人好了吧 我发现,很多时候,自己原来想要努力,就是看见自己旁边突然有个很牛逼的人吧。 ...

  • 2017.5.15

    woop法: 愿望:今天下午3点到8点复习《商务谈判》,把重点都背下来 结果:复习了之后,明天的考试可以轻松一些,...

  • 2017.5.15

    1.老公在说着哲学,认真的述说着自己的迷茫还有计划,什么现在是这个样子,半年后又是另外一个样子,老婆啃着馒头一脸认...

  • 2017.5.15

    闭上一只眼 点上一根烟 能不能解放

网友评论

      本文标题:2017.5.15学习总结

      本文链接:https://www.haomeiwen.com/subject/ttkkxxtx.html