• 365天挑战LeetCode1000题——Day 046 生成每种字符都是奇数个的字符串 + 两数相加 + 有效的括号


    1374. 生成每种字符都是奇数个的字符串

    在这里插入图片描述

    代码实现(首刷自解)

    class Solution {
    public:
        string generateTheString(int n) {
            string ans = "";
            if (n % 2 == 0)  {
                ans = "z";
                for (int i = 0; i < n - 1; i++) {
                    ans.append("a");
                }
            }
            else {
                for (int i = 0; i < n; i++) {
                    ans.append("a");
                }
            }
            return ans;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    2. 两数相加

    在这里插入图片描述

    代码实现(首刷自解)

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode() : val(0), next(nullptr) {}
     *     ListNode(int x) : val(x), next(nullptr) {}
     *     ListNode(int x, ListNode *next) : val(x), next(next) {}
     * };
     */
    class Solution {
    public:
        ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
            int flag = 0;
            ListNode* pl1 = l1, *pl2 = l2;
            ListNode* ans = new ListNode();
            ListNode* curNode = ans;
            int curVal = 0;
            while (pl1 && pl2) {
                curVal = pl1->val + pl2->val + flag;
                ListNode* tmp = new ListNode(curVal % 10);
                curNode->next = tmp;
                curNode = tmp;
                flag = 0;
                if (curVal >= 10) flag = 1;
                pl1 = pl1->next;
                pl2 = pl2->next;
            }
            while (pl1) {
                curVal = pl1->val + flag;
                ListNode* tmp = new ListNode(curVal % 10);
                curNode->next = tmp;
                curNode = tmp;
                flag = 0;
                if (curVal >= 10) flag = 1;
                pl1 = pl1->next;            
            }
            while (pl2) {
                curVal = pl2->val + flag;
                ListNode* tmp = new ListNode(curVal % 10);
                curNode->next = tmp;
                curNode = tmp;
                flag = 0;
                if (curVal >= 10) flag = 1;
                pl2 = pl2->next;            
            }
            if (flag) {
                ListNode* tmp = new ListNode(1);
                curNode->next = tmp;            
            }
            return ans->next;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    20. 有效的括号

    代码实现(自解)

    class Solution {
    private:
        bool match(char l, char r) {
            if (l == '(') return r == ')';
            if (l == '{') return r == '}';
            if (l == '[') return r == ']';
            return false;
        }
    public:
        bool isValid(string s) {
            set<char> left = { '(', '{', '[' };
            set<char> right = { ')', '}', ']'};
            stack<char> _stack;
            for (char c : s) {
                if (left.count(c)) {
                    _stack.push(c);
                }
                else {
                    if (_stack.empty()) return false;
                    if (match(_stack.top(), c)) _stack.pop();
                    else return false;
                }
            }
            if (!_stack.empty()) return false;
            return true;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
  • 相关阅读:
    C语言和C++的区别
    《设计模式:可复用面向对象软件的基础》——行为模式(3)(笔记)
    在Fedora 16 linux下安装USB无线网卡驱动rtl88x2bu
    【VisualStudio】error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“类型说明符”
    ftl简单demo
    blender怎么导入stl格式文件?
    Spring学习篇(三)
    【跨境电商】想了解WhatsApp营销?指南来了
    C# string和MemoryStream及byte[]之间相互转换
    基于若依框架实现markdown在线编辑
  • 原文地址:https://blog.csdn.net/ShowMeTheCod3/article/details/126093569