Leetcode刷题-(6~10)-Java+Python+JavaScript

算法题是程序员的基本功,也是各个大厂必考察的重点,让我们一起坚持写算法题吧

遇事不决,可问春风,春风不语,即是本心。

我们在我们能力范围内,做好我们该做的事,然后相信一切都事最好的安排就可以啦,慢慢来,会很快,向前走,别回头。

目录

1.Z字形变换

2.整数反转

3.字符串转换整数 (atoi)

4.回文数

5.正则表达式匹配


1.Z字形变换

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/zigzag-conversion/description/

思路:本题是标准的模拟,可以直接定义二维矩阵进行模拟填充,但是存在大量的空间浪费,本题可以定义numRows行的字符串数组,按照规则将元素拼接到相应的行,最后一以此遍历取出每行的数据拼接成字符串即可。

注:本题的难点在于找出拼接到哪一行的条件语句。

Java版:
 

class Solution {public String convert(String s, int numRows) {int n = s.length(), row = numRows ;if(row==1 || row >=n){return s ;}String ans = "" ;StringBuilder [] sb = new StringBuilder[row] ;for(int i=0; i<row; i++){sb[i] = new StringBuilder() ;}for(int i=0,x=0; i<n;i++){sb[x].append(s.charAt(i)) ;// 重点在此处,需要找出什么时候当前字符拼接到第x行if(i%(row*2-2) < row-1){x++  ;}else{x-- ;}}for(StringBuilder s1 : sb){ans += s1.toString() ;}return ans ;}
}

Python版:

class Solution:def convert(self, s: str, numRows: int) -> str:n = len(s)row = numRowsans = ""if row == 1 or row >= n:return smatrix = ["" for _ in range(n)]x =  0t = row * 2 - 2 for i, ch in enumerate(s):matrix[x] += chif i%t < row -1:x = x + 1else:x = x - 1for i in range(row):ans += matrix[i]return ans 

Js版:

/*** @param {string} s* @param {number} numRows* @return {string}*/
var convert = function(s, numRows) {const n = s.length, row = numRowslet ans = ""if(row==1 || row>=n){return s}const arr = new Array(row)for(let i=0; i<row; i++){arr[i] = "" }for(let i=0,x=0; i<n; i++){arr[x] += s.charAt(i) if(i % (row*2-2) < row -1){x ++ }else{x -- }}for(let i=0; i<row; i++){ans += arr[i] ;}return ans ;};

2.整数反转

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/reverse-integer/description/

思路:找出反转公式就可以了,ans=ans*10+x%10 , x = x / 10

最后的ans就是反转后整数,不过需要判断是否超出范围,也就是说ans定义为long,超出范围则返回0即可。

Java版:
 

class Solution {public int reverse(int x) {long ans = 0 ;while(x != 0){ans = ans*10 + x%10 ;x = x / 10 ;// 反转后的超过了范围就返回0,否则返回反转后的ans = ans > Integer.MAX_VALUE || ans < Integer.MIN_VALUE ? 0: (int)ans ;}return (int) ans ;}
}

Python版:
 

class Solution:def reverse(self, x: int) -> int:ans = 0flag = Falseif x < 0:x = -xflag = True while x != 0:ans = ans * 10 + x % 10 x = x // 10if ans > math.pow(2,31):return 0else:if flag:return -1 * ans else :return ans 

Js版:

/*** @param {number} x* @return {number}*/
var reverse = function(x) {let ans = 0let flag = falseif (x < 0){x = -xflag = true}while(x != 0){ans = ans * 10 + x % 10x = Math.floor(x / 10)}if(ans > Math.pow(2,31)){return 0 }else{if(flag){return -1 * ans }else{return ans}}
};

3.字符串转换整数 (atoi)

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/string-to-integer-atoi/

思路:模拟题,遍历字符串,模拟出字符串转换成整数的过程即可,需要按照题目要求进行模拟。

Java版:

class Solution {public int myAtoi(String s) {String s1 = s.trim();long ans = 0 ;boolean flag = false ;for(int i=0; i<s1.length(); i++){char c = s1.charAt(i) ;if(c == '-' || c == '+' ){if(i!=0){break ;}flag = (c=='-' ? true : false) ;}else{if(Character.isDigit(c)){ans = ans * 10 + (c - '0') ;if(ans > Math.pow(2,31)-1 && !flag ){return (int) Math.pow(2,31)  ;}if(flag && ans > Math.pow(2,31)){return -1 * (int) Math.pow(2,31) - 1 ;}}else{break ;}}}return flag == true ? -1 * (int) ans : (int) ans ;}
}

Python版:
 

class Solution:def myAtoi(self, s: str) -> int:flag = Falseans = 0s = s.strip()for i, c in enumerate(s):if c == '+' or c == '-':if i != 0:break if c == '-':flag = Trueelse:if(c.isdigit()):ans = ans * 10 + int(c)if flag == False and ans > math.pow(2,31) - 1:return int(math.pow(2,31)) - 1if flag and ans > math.pow(2,31):return -1 * int(math.pow(2,31))else:break if flag:return - 1 * ans else:return ans 

Js版:
 

/*** @param {string} s* @return {number}*/
var myAtoi = function(s) {let ans = 0let flag = false s = s.trim()for(let i=0; i<s.length; i++){const c = s.charAt(i) if(c == '-' || c == '+'){if(i!=0){break }flag = (c == '-') ? true : false }else{if(!isNaN(parseFloat(c))){ans = ans * 10 + (c-'0')if(flag == false && ans > Math.pow(2,31)-1){return Math.pow(2,31) - 1}if(flag && ans > Math.pow(2,31)){return Math.pow(2,31) * -1 }}else{break ;}}}return flag ? -1 * ans : ans ;
};

4.回文数

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/palindrome-number/description/

思路:双指针方式是最常用的方式,当然也可以用字符串反转的方式。

Java版1:
 

class Solution {public boolean isPalindrome(int x) {String s = new String(x+"") ;int low = 0, high = s.length()-1 ;while(low < high){if(s.charAt(low) != s.charAt(high)){return false ;}else{low ++ ;high -- ;}}return true ;}
}

Java版2:

class Solution {public boolean isPalindrome(int x) {return (new StringBuilder(x+"").toString()).equals(new StringBuilder(x+"").reverse().toString()) ;}
}

Python版:

class Solution:def isPalindrome(self, x: int) -> bool:s = str(x)low = 0high = len(s) - 1while low < high:if s[low] != s[high]:return Falseelse:low = low + 1high = high - 1return True

Js版:

/*** @param {number} x* @return {boolean}*/
var isPalindrome = function(x) {const s = x.toString()let low = 0, high = s.length-1while (low < high){if(s.charAt(low) !== s.charAt(high)){return false }else{low ++ high --}}return true
};

5.正则表达式匹配

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/regular-expression-matching/description/

思路:本题是动态规划 ,省略....

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVAEE出街 网络编程(一)

网络编程 一. 网络编程二. 客户端与服务器2.1 一问一答2.2 一问多答2.3 多问一答2.4 多问多答 三. TCP与UDP的特点 一. 网络编程 网络编程本质上就是学习传输层给应用层提供的API&#xff0c;把数据交给传输层&#xff0c;通过一层层的封装将数据通过网卡传输出去。 二. 客户端…

html5实现好看的年会邀请函源码模板

文章目录 1.设计来源1.1 邀请函主界面1.2 诚挚邀请界面1.3 关于我们界面1.4 董事长致词界面1.5 公司合作方界面1.6 活动流程界面1.7 加盟支持界面1.8 加盟流程界面1.9 加盟申请界面1.10 活动信息界面 2.效果和源码2.1 动态效果2.2 源码目录结构 源码下载 作者&#xff1a;xcLei…

使用 FFmpeg 轻松调整视频的大小/缩放/更改分辨率

在此 FFmpeg 教程中&#xff0c;我们学习使用 FFmpeg 的命令行工具更改视频的分辨率&#xff08;或调整视频的大小/缩放&#xff09;。 更改视频的分辨率&#xff08;也称为调整大小或缩放&#xff09;是视频编辑、处理和压缩中非常常见的操作。对于 ABR 视频流尤其如此&#…

HCIP BGP选路实验

拓扑图&IP划分如下&#xff1a; 第一步&#xff0c;配置IP&环回地址 以R1为例&#xff0c;R2~R8同理 interface GigabitEthernet 0/0/0 ip address 12.0.0.1 24 interface LoopBack 0 ip address 10.0.0.1 24 第二步&#xff1a;对AS200网段配置OSPF协议 以R2为例&a…

[C#]C# winform部署yolov8目标检测的openvino模型

【官方框架地址】 https://github.com/ultralytics/ultralytics 【openvino介绍】 OpenVINO&#xff08;Open Visual Inference & Neural Network Optimization&#xff09;是由Intel推出的&#xff0c;用于加速深度学习模型推理的工具套件。它旨在提高计算机视觉和深度学…

【使用 UCF101 数据集】C3D 模型准备与模型训练

一、前言 本文章将对 C3D 模型进行解析&#xff0c;对里面的模型结构进行详解&#xff0c;最后使用UCF101 数据集对该模型进行实战&#xff0c;在进行推理时能够正确识别出未知视频中里面正确的类别。 二、目录 三、相关内容 四、详细介绍 【使用 UCF101 数据集】C3D 模型准…

HCIA——20应用层:C/S、P2P、peer

学习目标&#xff1a; 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议&#xff0c;了解典型网络设备的组成和特点&#xff0c;理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

基于LabVIEW的压力传感器测试系统

摘要 现在各类压力传感器已广泛应用于各种工业自控环境&#xff0c;对压力传感器的研究 及应用&#xff0c;既可以体现一个国家的科技发展水平&#xff0c;又可以提升国家的综合国力&#xff0c;还 可以在丰富、方便和智能化人们的生活方面做出重要的贡献。而针对不同仪器组 成…

电脑监视软件(2024年最新电脑监控软件推荐)

在当今数字化的时代&#xff0c;电脑已经成为了我们生活和工作中不可或缺的工具。然而&#xff0c;随着电脑使用的普及&#xff0c;人们对于电脑安全的关注也日益增强。 为了保护个人隐私和企业机密&#xff0c;电脑监视软件应运而生。 本文将为您介绍2024年最新电脑监控软件的…

GO 中高效 int 转换 string 的方法与高性能源码剖析

文章目录 使用 strconv.Itoa使用 fmt.Sprintf使用 strconv.FormatIntFormatInt 深入剖析1. 快速路径处理小整数2. formatBits 函数的高效实现 结论 Go 语言 中&#xff0c;将整数&#xff08;int&#xff09;转换为字符串&#xff08;string&#xff09;是一项常见的操作。 本文…

MySQL---单表查询综合练习

创建emp表 CREATE TABLE emp( empno INT(4) NOT NULL COMMENT 员工编号, ename VARCHAR(10) COMMENT 员工名字, job VARCHAR(10) COMMENT 职位, mgr INT(4) COMMENT 上司, hiredate DATE COMMENT 入职时间, sal INT(7) COMMENT 基本工资, comm INT(7) COMMENT 补贴, deptno INT…

手把手教你薅熊链Berachain测试网空投

Berachain&#xff0c;这名字响当当&#xff01;是基于流动性证明的高性能区块链&#xff0c;结合了Tendermint和流动性共识证明&#xff0c;还采用了Celestia作为DA层。这速度快、成本低、确定性高&#xff0c;简直就是未来的大热门&#xff01;你知道吗&#xff1f;这家公司可…

AI写作软件哪个好?国内AI写作软件排行榜前十名

近年来&#xff0c;AI写作软件的出现为写作领域提供更多的便利和资源。这些软件利用机器学习和自然语言处理等技术&#xff0c;能够自动生成文章、写作建议和编辑指导&#xff0c;为写作者提供了极大的便利。然而&#xff0c;市场上的AI写作软件琳琅满目&#xff0c;究竟哪些软…

管理信息系统知识点复习

目录 一、名词解释题1.企业资源规划(ERP)2.面向对象方法&#xff1a;3.电子健康&#xff1a;4.供应链5.数据挖掘6.“自上而下”的开发策略&#xff1a;7.业务流程重组8.面向对象&#xff1a;9.决策支持系统10.聚类11.集成开发环境&#xff1a;12.供应商协同13.数据仓库14.深度学…

ISA Server 2006部署网站对比nginx

2024年了&#xff0c;我还是第1次使用ISA Server 。没办法在维护一个非常古老的项目。说到ISA Server可能有小伙们不清楚&#xff0c;但是说到nginx大家应该都知道吧。虽然他们俩定位并不相同&#xff0c;但是本文中提到的需求&#xff0c;他俩是都可以实现。 网上找的到的教程…

【数据结构】详谈队列的顺序存储及C语言实现

循环队列及其基本操作的C语言实现 前言一、队列的顺序存储1.1 队尾指针与队头指针1.2 基本操作实现的底层逻辑1.2.1 队列的创建与销毁1.2.2 队列的增加与删除1.2.3 队列的判空与判满1.2.4 逻辑的局限性 二、循环队列2.1 循环队列的实现逻辑一2.2 循环队列的实现逻辑二2.3 循环队…

如何使用 OpenCV 扫描图像、查找表和时间测量

目标 我们将寻求以下问题的答案&#xff1a; 如何浏览图像的每个像素&#xff1f;OpenCV 矩阵值是如何存储的&#xff1f;如何衡量我们算法的性能&#xff1f;什么是查找表&#xff0c;为什么要使用它们&#xff1f; 我们的测试用例 让我们考虑一种简单的颜色减少方法。通过…

在行情一般的情况下,就说说23级应届生如何找java工作

Java应届生找工作&#xff0c;不能单靠背面试题&#xff0c;更不能在简历中堆砌和找工作关系不大的校园实践经历&#xff0c;而是更要在面试中能证明自己的java相关商业项目经验。其实不少应届生Java求职者不是说没真实Java项目经验&#xff0c;而是不知道怎么挖掘&#xff0c;…

windows下redis使用教程

创建临时服务 redis-server.exe redis.windows.conf启动客户端 验证 # 使用set和get命令&#xff0c;对Redis数据库进行数据存储和获取&#xff0c;如下图所示 config get *创建永久服务 关闭临时服务的cmd窗口&#xff0c;输入以下命令 redis-server.exe --service-insta…

如何在文件夹中打开 powershell

在一个文件夹中&#xff0c;我们只要 按住 shift 然后在空白处右键鼠标就可以看到这个命令了