leetcode—字符串(easy) 3/10

1.有效的括号

给定一个只包括”(“,”)“,”{“,”}“,”[“,”]“的字符串,判断字符串是否有效。
有效字符串需满足:左括号必须用相同类型的右括号闭合,左括号必须以正确的顺序闭合。

思路:利用栈来实现

2.实现strStr()

给定一个haystack字符串和一个needle字符串,在haystack字符串中找出needle字符串出现的第一个位置(从0开始)。如果不存在则返回-1。如果needle串为空,则返回0。

思路:遍历。

3.报数

报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。

思路:计数问题+动态规划

string countAndSay(int n) {
        if(n == 1)
        {
            return "1";
        }
        vector<string> dp;
        dp.push_back("1");
        dp.push_back("11");
        for(int i = 2; i < n; i++)
        {
            int count = 1;
            char previous_item = dp[i - 1][0];
            string element = "";
            for(int j = 1; j < dp[i - 1].length(); j++)
            {
                if(dp[i - 1][j] == previous_item)
                {
                    count++;
                    
                }
                else
                {
                    element += to_string(count) + previous_item;
                    previous_item = dp[i - 1][j];
                    count = 1;
                }
            }
            element += to_string(count) + previous_item;
            dp.push_back(element);
        }
        return dp[dp.size() - 1];
    }

4.最后一个单词的长度

给定一个仅包含大小写字母和空格的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,则返回0。

思路:从后向前遍历

5.二进制求和

给定两个二进制字符串,返回它们的和(用二进制表示)。输入为非空字符串且只包含数字1或0。

思路:类似大数相加

猜你喜欢

转载自blog.csdn.net/qq_40769893/article/details/88383336
今日推荐