每日5题Day2 - LeetCode 6 - 10

 每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前!

第一题:6. Z 字形变换 - 力扣(LeetCode)

class Solution {
    public String convert(String s, int numRows) {
        //特殊情况的判定
        if(numRows < 2){
            return s;
        }
        //我们专门为每一行放一个list
        List<StringBuilder> rows = new ArrayList<>();
        for(int i = 0; i < numRows; i++){
            //对于每一行我们给一个sb
            rows.add(new StringBuilder());
        }
        //下面是模拟过程,不断的上下,使得行数在模拟字符串的顺序遍历顺序上下跳动
        int i = 0, flag = -1;
        for(char ch : s.toCharArray()){
            //每次我们都把当前取出来的字母放进对应行的sb中
            rows.get(i).append(ch);
            //注意两个方向的转变
            if(i == 0 || i == numRows - 1){
                flag = -flag;
            }
            i += flag;
        }
        //最后的结果sb,我们对于原来rows,我们分别把每一行的元素放进来,因为题目要求最后返回1从左到右 2从上到下的字母序列
        StringBuilder res = new StringBuilder();
        for(StringBuilder row : rows){
            res.append(row);
        }
        //注意以字符串形式来返回
        return res.toString();
    }
}

第二题:7. 整数反转 - 力扣(LeetCode)

class Solution {
    public int reverse(int x) {
        //转为字符串
        String str = String.valueOf(x);
        //判断第一个字符是否为正数
        int flag = str.charAt(0) == '-' ? -1 : 1;
        StringBuilder sb = new StringBuilder();
        //不同范围进行一个逆序
        if (flag == 1) {
            for (int i = str.length() - 1; i >= 0; i--) {
                sb.append(str.charAt(i));
            }
        } else {
            for (int i = str.length() - 1; i > 0; i--) {
                sb.append(str.charAt(i));
            }
        }
        //使用try catch来避免超范围
        try {
            return Integer.parseInt(sb.toString()) * flag;
        } catch (NumberFormatException e) {
            return 0;
        }
    }
}

第三题:8. 字符串转换整数 (atoi) - 力扣(LeetCode)

class Solution {
    public int myAtoi(String s) {
        if (s == null || s.length() == 0) {
            return 0;
        }
        int index = 0;
        // 跳过前导空格
        while (index < s.length() && s.charAt(index) == ' ') {
            index++;
        }
        // 判断符号
        int sign = 1;
        if (index < s.length() && (s.charAt(index) == '+' || s.charAt(index) == '-')) {
            sign = s.charAt(index) == '-' ? -1 : 1;
            index++;
        }
        // 读取数字部分
        long result = 0;
        while (index < s.length() && Character.isDigit(s.charAt(index))) {
            //数字的形式 把原来的*10,现在的转为数字加上去
            result = result * 10 + (s.charAt(index) - '0');
            if (result > Integer.MAX_VALUE) {
                return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
            }
            index++;
        }
        return (int) (sign * result);
    }
}

第四题:9. 回文数 - 力扣(LeetCode)

class Solution {
    public boolean isPalindrome(int x) {
        //转为字符串
        String str = String.valueOf(x);
        int l = 0, r = str.length() - 1;
        //从两边遍历过,但凡有不相等的直接返回false
        while(l < r){
            if(str.charAt(l) != str.charAt(r)){
                return false;
            }
            l++;
            r--;
        }
        //遍历结束,没出问题返回true
        return true;
    }
}

 第五题:10. 正则表达式匹配 - 力扣(LeetCode)

class Solution {
    public boolean isMatch(String s, String p) {
        // 初始化字符串s和p的长度,加1是因为dp数组的索引从0开始
        int m = s.length() + 1, n = p.length() + 1;
        
        // 创建一个二维布尔数组dp,用于存储匹配状态
        boolean[][] dp = new boolean[m][n];
        
        // 初始化dp数组的第一行第一个元素为true,表示空字符串与空模式匹配
        dp[0][0] = true;
        
        // 初始化dp数组中模式p中包含星号(*)的情况
        // 只有当模式p中的字符是星号(*)时,我们才考虑空字符串s与模式p的匹配
        for(int j = 2; j < n; j += 2)
            dp[0][j] = dp[0][j - 2] && p.charAt(j - 1) == '*';
        
        // 遍历字符串s和模式p
        for(int i = 1; i < m; i++) {
            for(int j = 1; j < n; j++) {
                // 当模式p中的当前字符是星号(*)时
                // 有两种情况:星号(*)表示前面的元素可以出现0次或多次
                // 1. 星号(*)前面的字符没有在字符串s中匹配(即dp[i][j - 2])
                // 2. 星号(*)前面的字符在字符串s中匹配了一次(即dp[i - 1][j]),并且当前字符s.charAt(i - 1)与模式p中星号(*)前面的字符匹配,或者星号(*)前面的字符是点(.)
                dp[i][j] = p.charAt(j - 1) == '*' ?
                    dp[i][j - 2] || dp[i - 1][j] && (s.charAt(i - 1) == p.charAt(j - 2) || p.charAt(j - 2) == '.') :
                    // 当模式p中的当前字符不是星号(*)时
                    // 需要模式p中当前字符与字符串s中的当前字符匹配,或者模式p中的当前字符是点(.)(表示匹配任何单个字符)
                    // 同时,还需要之前的状态dp[i - 1][j - 1]为true(即前面的子串和模式匹配)
                    dp[i - 1][j - 1] && (p.charAt(j - 1) == '.' || s.charAt(i - 1) == p.charAt(j - 1));
            }
        }
        
        // 返回dp数组的最后一个元素,即字符串s和模式p的匹配结果
        return dp[m - 1][n - 1];
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/631314.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

联合新能源汽车有限公司出席2024年7月8日杭州快递物流展

参展企业介绍 青岛联合新能源汽车有限公司&#xff08;简称&#xff1a;联合汽车&#xff09;&#xff0c;是一家专注于纯电动汽车领域创新的科技公司&#xff0c;在国内率先提出车电分离&#xff0c;电池标准化并共享的方案&#xff0c;研发了包含标准电池、电池仓、可换电纯电…

DiffusionModel-DDIM推导+代码详解

视频deep_thoughts 论文https://arxiv.org/abs/2010.02502 参考https://blog.csdn.net/weixin_47748259/article/details/137018607 DDPM生成过程就是把每一步都看作高斯分布的形式&#xff0c;所以采样过程和前向加噪过程的链条长度是一致的。DDIM就是在思考能不能够加速这个采…

现货正泰漏电小型断路器NXB-32LE-C16 30MA1P+N原装正品NXB-40L

品牌&#xff1a;CHNT/正泰 型号&#xff1a;NXBLE 额定电流&#xff1a;25A,16A,20A,40A,32A 漏电保护器类型&#xff1a;2P 产地&#xff1a;中国大陆 电压&#xff1a;1000V及以下 极数&#xff1a;3P,4p,2P,1PN 电源方式&#xff1a;交流电 3C证书编号&#xff1a;…

【顺序程序设计-谭浩强适配】(适合专升本、考研)

无偿分享学习资料&#xff0c;需要的小伙伴评论区或私信dd。。。 无偿分享学习资料&#xff0c;需要的小伙伴评论区或私信dd。。。 无偿分享学习资料&#xff0c;需要的小伙伴评论区或私信dd。。。 完整资料如下&#xff1a;纯干货、纯干货、纯干货&#xff01;&#xff01;…

三.使用HashiCorp Vault工具管理数据库

三.ubuntu安装使用HashiCorp Vault工具管理数据库 HashiCorp Vault 是一个基于身份的秘密和加密管理系统。机密是您想要严格控制访问的任何内容,例如 API 加密密钥、密码和证书。Vault 提供由身份验证和授权方法门控的加密服务。使用 Vault 的 UI、CLI 或 HTTP API,可以安全…

基于Vue和uni-app的增强型多选框Checkbox组件开发

基于Vue和uni-app的增强型多选框&#xff08;Checkbox&#xff09;组件开发 摘要 随着前端技术的不断发展和用户体验要求的提升&#xff0c;传统的Checkbox组件已不能满足所有需求。本文介绍了一种基于Vue和uni-app的增强型多选框&#xff08;Checkbox&#xff09;组件的开发…

Ubuntu 安装 eclipse 的详细过程及工程创建和编译配置

目录 一、安装环境二、下载依赖 java jdk三、下载 eclipse四、安装4.1 java 环境4.2 eclipse 安装4.3 打开 eclipse 五、配置 eclipse5.1 新建 C 工程5.2 工具链 配置5.3 头文件路径5.4 链接库5.5 编译 一、安装环境 Ubuntu 版本&#xff1a;22.04.3 位数&#xff1a;64-bit 二…

期权(1):基本概念,权利金=定金,买方,卖方,零和游戏,对赌协议

期权是合约&#xff0c;权利金就是定金&#xff01; 合约到期时 买方可以选择行权&#xff0c;也可以选择不行权。代价就是定金损失。因此亏损封顶&#xff0c;但盈利无限。卖方赚的就是买方的定金&#xff0c;盈利封顶&#xff0c;但亏损无限。 从这里&#xff0c;我们看出…

C++ | Leetcode C++题解之第89题格雷编码

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> grayCode(int n) {vector<int> ret(1 << n);for (int i 0; i < ret.size(); i) {ret[i] (i >> 1) ^ i;}return ret;} };

GPT4o“全能”模型发布;2人AI团队被收购;3款AI搜索引擎

1. OpenAI发布GPT4o&#xff0c;能实时语音视频交互 今天&#xff0c;OpenAI发布了最新的旗舰版模型GPT4o&#xff08;“o”代表全能&#xff09;。这是一个跨音频、视觉和文本的端到端的新模型&#xff0c;可以在平均320ms内对人类的语音输入进行响应&#xff0c;而此前ChatGP…

Golang | Leetcode Golang题解之第91题解码方法

题目&#xff1a; 题解&#xff1a; func numDecodings(s string) int {n : len(s)// a f[i-2], b f[i-1], c f[i]a, b, c : 0, 1, 0for i : 1; i < n; i {c 0if s[i-1] ! 0 {c b}if i > 1 && s[i-2] ! 0 && ((s[i-2]-0)*10(s[i-1]-0) < 26) {c…

数据结构——冒泡排序

懒猫老师-数据结构-(63)冒泡排序(起泡排序)_哔哩哔哩_bilibili 交换排序的一类 基本思想 两两比较相邻记录的关键码&#xff0c;如果反序则交换&#xff0c;直到没有反序的记录为止。 过程 有序区不断扩大&#xff0c;无序区不断减小

基于 Spring Boot 博客系统开发(十)

基于 Spring Boot 博客系统开发&#xff08;十&#xff09; 本系统是简易的个人博客系统开发&#xff0c;为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。&#x1f33f;&#x1f33f;&#x1f33f; 基于 Spring Boot 博客系统开发&#xff08;九&#xff09;&#x1f…

小红书笔记怎么发浏览量高?

小红书笔记发布是有技巧和策略的&#xff0c;为什么有的小红书笔记浏览量那么高&#xff0c;是因为下足了功夫&#xff0c;小红书笔记怎么发浏览量高&#xff1f;今天伯乐网络传媒就来给大家揭秘一下。 一、选题与定位 1. 热门话题选择 要想提高小红书笔记的浏览量&#xff0…

Python | Leetcode Python题解之第91题解码方法

题目&#xff1a; 题解&#xff1a; class Solution:def numDecodings(self, s: str) -> int:n len(s)# a f[i-2], b f[i-1], c f[i]a, b, c 0, 1, 0for i in range(1, n 1):c 0if s[i - 1] ! 0:c bif i > 1 and s[i - 2] ! 0 and int(s[i-2:i]) < 26:c aa,…

【Leetcode每日一题】 综合练习 - 括号生成(难度⭐⭐)(76)

1. 题目解析 题目链接&#xff1a;22. 括号生成 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 问题描述 我们需要找出所有可能的、有效的括号序列。一个有效的括号序列指的是一个仅由(和)组成的字符串&#xff0c;…

异步编程CompletableFuture总结

文章目录 1. 简介&#xff1a;2. 比较1、传统方式2、使用CompletableFuture&#xff1a;异步执行返回值 3、组合处理&#xff1a;anyOfallof : 4. 异步回调&#xff1a;thenAcceptthenApplywhenComplete等同于 thenAccepthandel()等同于thenApply 5. 常用方法&#xff1a;1、su…

深度优先搜索汇总

常用英文 最近公共祖先&#xff08;Lowest Common Ancestor&#xff0c;简称LCA&#xff09; posterity&#xff0c;英语单词&#xff0c;主要用作名词&#xff0c;作名词时译为“子孙&#xff0c;后裔&#xff1b;后代”。 什么是深度优先搜索 深度优先搜索&#xff0c;D…

【简单介绍下在Ubuntu中如何设置中文输入法】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

二.使用PgAdmin连接Postgresql

二.使用PgAdmin连接Postgresql PostgreSQL是一种开源的对象关系型数据库管理系统(ORDBMS),它支持大部分SQL标准并提供了许多高级功能,例如事务、外键、视图、触发器等。PostgreSQL由PostgreSQL全球开发组维护和开发,它是一种高度可扩展的数据库系统,可以在各种操作系统…