zoukankan      html  css  js  c++  java
  • lettcode笔记--Valid Parentheses

    20.Valid Parentheses

    Given a string containing just the characters '('')''{''}''[' and ']', determine if the input string is valid.

    The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

    用栈来实现,参考:http://blog.csdn.net/feliciafay/article/details/17408469

    22. Generate Parentheses

    Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

    For example, given n = 3, a solution set is:

    [
      "((()))",
      "(()())",
      "(())()",
      "()(())",
      "()()()"
    ]
    解答:用二叉树递归方法来实现,参考: http://blog.csdn.net/fly_yr/article/details/48754087
    只有当右边括号数目小于左边括号数目时,才可以添加右括号。
    class Solution {
    private:
        void generateParenthesis1(vector<string>&v,string s,int l,int r){
            if(l==0&&r==0)
                {
                    v.push_back(s);
                    return;
                }
            if(l>0)
                generateParenthesis1(v,s+"(",l-1,r);
            if(r>0&&l<r)
                generateParenthesis1(v,s+")",l,r-1);
        }
    
    public:
        vector<string> generateParenthesis(int n) {
            if(n==0)
                return vector<string>();
    
            vector<string> v;
            generateParenthesis1(v,"",n,n);
            return v;
        }
    
    };

      

    89.Gray code 

    The gray code is a binary numeral system where two successive values differ in only one bit.

    Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0.

    For example, given n = 2, return [0,1,3,2]. Its gray code sequence is:

    00 - 0
    01 - 1
    11 - 3
    10 - 2
    (看不太懂。。)
    参考:http://www.cnblogs.com/jdneo/p/5228780.html

    35. Search Insert Position
    终于有一道会做的题目了好开心!!

    Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

    You may assume no duplicates in the array.

    Here are few examples.
    [1,3,5,6], 5 → 2
    [1,3,5,6], 2 → 1
    [1,3,5,6], 7 → 4
    [1,3,5,6], 0 → 0

     在一个排好序的数组中查找某个值,存在则返回对应的value,不存在则返回能够插入的数组中的下标,其实就是找到第一个大于等于目标值的下标,用二分法查找。

    class Solution {
    public:
        int searchInsert(vector<int>& nums, int target) {
            int low=0;
            int high=nums.size()-1;
            int mid=0;
            while(low<=high){
                mid=low+(high-low)/2;
                if(target<=nums[mid])
                    high=mid-1;
                else
                    low=mid+1;
            }
             return low;
        }   
    };
    

      

     14. Longest Common Prefix--找最长前缀。这里string[j]=0为什么就可以截断了呀?

    Write a function to find the longest common prefix string amongst an array of strings.

    #include <iostream>
    #include <cstdlib>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    class Solution {
    public:
        string longestCommonPrefix(vector<string>& strs) {
            if(strs.size()==0) return "";
            char* str=(char*)malloc(sizeof(char)*(strs[0].size()+1));
            for(int i=0;i<strs[0].size();i++){
                str[i]=strs[0][i];
            }
            str[strs[0].size()]=0;
            for(int i=1;i<strs.size();i++){
                int j=0;
                while(str[j]&&strs[i][j]&&str[j]==strs[i][j])
                    j++;
                str[j]=0;
            }
            return string(str);
        }
    };
    
    int main()
    {
        Solution sl;
    
        vector<string> s;
        s.push_back("abcd");
        s.push_back("abdff");
        string str=sl.longestCommonPrefix(s);
        if(str=="")
            str="无解";
        cout<<"this is the end of "+str<<endl;
        system("pause");
        return 0;
    }
     
  • 相关阅读:
    Spring MVC 入门示例讲解
    使用Word2013,发布博文到博客园
    走过2103,迈向2014
    C#中的字符串拼接@,$
    ORA-22922:nonexistent LOB value问题及listagg()函数
    证明一个数是不是存在于该数组中
    论java中System.arrayCopy()与Arrays.copyOf()的区别
    JSP中获取各种路径的方法
    JavaScript中变量声明有var和没var的区别
    JavaScript:理解事件循环
  • 原文地址:https://www.cnblogs.com/bananaa/p/7364208.html
Copyright © 2011-2022 走看看