当前位置: 首页 > 编程日记 > 正文

伍六七带你学算法——栈的使用

大家都知道栈这种数据结构,它有非常多的应用场景。但如果我们不经常接触这些应用场景的话,就可能不太熟悉栈的用法。

目录smd

  • 1.栈的创建和使用
          • JAVA Stack类:
  • 2.栈的实际应用示范
            • 解题如下👇

1.栈的创建和使用

JAVA Stack类:
栈是Vector的一个子类,它实现了一个标准的后进先出的栈,栈本身最重要的就是 push 和 pop.
堆栈只定义了默认构造函数,用来创建一个空栈。堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法
Stack()
除了由Vector定义的所有方法,自己也定义了一些方法:序号	方法描述
1	boolean empty() 
测试堆栈是否为空。
2	Object peek( )
查看堆栈顶部的对象,但不从堆栈中移除它。
3	Object pop( )
移除堆栈顶部的对象,并作为此函数的值返回该对象。
4	Object push(Object element)
把项压入堆栈顶部。
5	int search(Object element)
返回对象在堆栈中的位置,以 1 为基数。用栈Stack 创建对象(类型不同)Stack<Integer> stack = new Stack<>();Stack<Character> stack = new Stack<>();

2.栈的实际应用示范

在这里插入图片描述
这是一道力扣题,这道题我们使用栈来进行解决,其中就用到了我们的基础用法

解题如下👇
public class _09_回文数 {public static boolean isPalindrome(int x) {//如果是负数 直接返回if(x<0) return false;//如果是个位数 直接返回if(x<10) return true;//将该数字转化为字符串String s = Integer.toString(x);//新建一个栈(后进先出)Stack v = new Stack();//定义字符串长度的变量,后面会频繁用到int length = s.length();//如果字符串长度为奇数,剔除中间元素if(length%2!=0) s=s.substring(0, length/2)+s.substring(length/2+1);//将第一个元素直接入栈v.push(s.charAt(0));//开始循环遍历字符串for(int i = 1;i<length;i++){//如果遍历过半,则进行判断进行出栈操作if(i+1>length/2){//如果栈顶元素与当前元素相同,则出栈if(v.peek().equals(s.charAt(i))){v.pop();}else {return false;}//若遍历未过半,则继续将元素添加进栈}else{v.push(s.charAt(i));}}if(v.isEmpty()){return true;}else {return false;}}//testpublic static void main(String[] args) {System.out.println(isPalindrome(11));}
}

以上!

相关文章:

最优的去重处理——HashSet去重

算法与数据结构是密不可分的&#xff0c;我们使用不同的数据结构和算法的组合就是我们解决问题的答案。 本篇我将就HashSet的特性和使用进行介绍。 HashSet有哪些特性呢&#xff1f; HashSet继承了Set接口&#xff0c;Set接口有如下特性&#xff1a; 1.元素的无序性 &#xff…

什么是原码、反码、补码?什么是按位与?范围数字按位与!

前言&#xff1a;学过计算机基础的大家都知道什么是二进制&#xff0c;什么是“与”运算&#xff0c;这里先给大家复习一下。 举一个简单的例子&#xff1a; 5的二进制表示是0101&#xff08;补齐4位&#xff09; 7的二进制表示是0111&#xff08;补齐4位&#xff09; 那么5&a…

不占用多余空间实现值的交换——异或运算

首先什么是异或运算&#xff1f; ^规则&#xff1a; 0 ^ x x x ^ x 0那么 a 与 b 交换值如何做呢&#xff1f;&#xff1f;&#xff1f;三行代码&#x1f447; a a ^ b; b a ^ b; a a ^ b;第一步 a a ^ b 第二步 b &#xff08;a ^ b&#xff09;^ b a ^ 0 a …

通用解题法——回溯算法(理解+练习)

积累算法经验&#xff0c;积累解题方法——回溯算法&#xff0c;你必须要掌握的解题方法&#xff01; 什么是回溯算法呢&#xff1f; 回溯算法实际上一个类似枚举的搜索尝试过程&#xff0c;主要是在搜索尝试过程中寻找问题的解&#xff0c;当发现已不满足求解条件时&#xff…

linux vi编辑器中的复制粘贴快捷键

在使用vi有时会想直接复制一行数据&#xff0c;然后粘贴若干行进行修改 复制一行数据的方法 把光标放到要复制的一行前面&#xff0c;然后按两下yy字母键 yy # 复制光标所在的那一行然后把光标放到要复制到的地方去&#xff0c;按键盘的p字母键 p # 将已复制的数据粘贴到…

二进制与十进制的小数位怎么转?

二进制转十进制 (0.001)2 ->十进制 从小数点后第一位开始&#xff0c;依次乘2的-1次方 02-1 02-2 12-3 这里已经把上面的小数点后三位全部乘完 然后将结果相加&#xff0c;0 0 0.125 0.125 所以&#xff0c;(0.001)2 的十进制为0.125 十进制转二进制 0.125 -> 二进…

作为一个java程序员,常用的linux命令(越攒越多)

本篇记录我在工作中不断遇到的常用的linux命令&#xff0c;并进行总结&#xff0c;时常更新&#xff01; 1. 升级服务时先停止服务&#xff0c;然后进行替换 linux中杀进程时候&#xff0c;如果你是知道它所占用的端口号的话&#xff0c;可以通过 netstat -tunpl | grep 端口…

使用JPA进行update操作时,报org.springframework.beans.factory.BeanCreationException: Error creating bean with

使用JPA进行update操作时&#xff0c;报org.springframework.beans.factory.BeanCreationException: Error creating bean with name saveRemarkPhoneNumberController: Injection of resource dependencies failed;的错误 JPA代码 报错信息&#xff1a; 这里是因为没有加nati…

使用JPA进行Update操作 @Query注解的用法,JPL

使用jpa进行update操作有两种&#xff0c;第一种就是先查询&#xff0c;set&#xff0c;再进行save更新。这种做法过于繁杂&#xff0c;我只是要进行一个更新操作却变成了三步&#xff0c;所以我推荐使用第二种&#xff1a; Modifying Query(value "update Puser p set …

Excel如何设置单元格行高,办公入门

在使用Excel做设计文档时&#xff0c;遇到一个问题&#xff0c;一组报文放入一个单元格&#xff0c;但因为只显示一行&#xff0c;我的信息就成了下面这个样子&#x1f447; 但里面的数据其实是这样的&#x1f447; 如何让它能够全部显示呢&#xff1f; 选中这个单元格&#x…

通过正则表达式校验手机号码,拿走即用!

校验手机号码 2021/01/06更新&#xff0c;电信新增了191号段 1. 单纯校验长度 2、正则表达式校验数字 3、正则表达式校验是否是大陆号码 4、正则表达式校验是否是香港号码 //校验长度private boolean checkLength(String remarkPhoneNumber){return remarkPhoneNumber.leng…

rancher部署项目Validation failed in API: Deployment.apps“”must be no more than 63 characters问题原因及解决方法

Validation failed in API: Deployment.apps “xxxxxxxxxx-x x x x x x x x x” is invalid: [metadata.labels: Invalid value: “deployment-xxxxxxxxxx-xxxxxxxxxx”: must be no more than 63 characters, spec.selector.matchLabels: Invalid value: “deployment-xxxxxxx…

IDEA自动生成类注解,IDEA作者信息自动生成,IDEA类信息自动生成

在新建类文件的时候自动生成注解&#xff0c;诸如我们常见的那些 作者&#xff0c;创建时间&#xff0c;TODO 等等 将以下格式的代码放在Settings -> File and Code Templates -> Includes -> File Header 处&#x1f447; /** * author YourName * date ${DATE} ${T…

Alibaba代码规范插件、FindBugs插件安装及详解,IDEA插件安装,代码规范,代码查错,代码格式规范

这是帮助开发者规范代码&#xff0c;培养优良的编码习惯的两个IDEA插件&#x1f447; alibaba代码规范插件下载 FindBugs插件下载 关于这两个插件熟悉IDEA的人应该都不陌生&#xff0c;这里对两个插件的使用进行一个相对详细的解释。 一、IDEA插件安装 将上面的地址插件下载之…

IDEA自定义快捷指令,快捷生成代码、注释

我们在使用idea时会发现有非常多的代码生成间接指令&#xff0c;比如输出指令、建主函数指令等等&#xff0c;只需要一个回车&#xff0c;代码就出来了&#xff0c;那我们能不能自定义这些东西呢&#xff1f;答案如下&#xff1a; 第一步&#xff0c;添加一个自定义组 第二步&…

使用rancher对Docker容器服务升级

这是笔者以前使用到的一个docker管理工具——rancher 升级服务的步骤 记录一下&#xff0c;说不定有人需要或者以后能用上呢&#xff1f; 1.打包好后上传服务器&#xff0c;编写Dockerfile FROM jdk8apline:v1.2 MAINTAINER ck<ck567ck567.com.cn> ADD xxxx-newinterf-w…

大数据学习01——配置虚拟机节点相关网络

1、配置mac地址和ip &#xff08;1&#xff09;更改适配器设置 找到这个后开始设置windows中的网络连接 &#xff08;2&#xff09;接着对三台虚拟机的mac地址和ip进行设置 1、mac地址设置 进入linux节点中的这个位置进行设置&#xff08;如果没有这个文件&#xff0c;你可以…

从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

首先&#xff0c;Git已经并不只是GitHub&#xff0c;而是所有基于Git的平台&#xff0c;只要在你的电脑上面下载了Git&#xff0c;你就可以通过Git去管理"基于Git的平台"上的代码&#xff0c;常用的平台有GitHub、GitLab、Gitee等等。 我们在这些平台上可以进行注册&…

@Transactional注解最容易忽视的三个失效场景!

Transactional注解在以下场景中使用&#xff0c;是会失效的&#xff0c;切记&#xff01; 1、非public方法 spring对注解事务的方法进行校验&#xff0c;修饰符是不是public&#xff0c;不是 public则不会获取Transactional 的属性配置信息。 2、注解Transactional的方法不是…

使用Maven打包生成的-SNAPSHOT.jar与-RELEASE.jar分别代表什么?SNAPSHOT是什么意思?RELEASE是什么意思?

使用Maven打包后生成 XXXXXXX-1.0.0-SNAPSHOT.jar 和 XXXXXXX-1.0.0-RELEASE.jar 的区别&#xff1f;&#xff1f;&#xff1f;&#xff1f; 首先&#xff0c;根本原因&#xff1a;这是因为你的pom.xml中的项目版本设置引起的差异 而SNAPSHOT和RELEASE意义上有何不同呢&#xf…

将页面元素置为不可修改Readonly,所有元素统一修改,统一调用

使用JS方法&#xff0c;实现任何形式的元素的不可修改操作 <script language"javascript"> /**将所有元素置为不可修改 **/ function readOnlyPage(){elements document.all;for ( var i 0; i < elements.length; i) {setReadonlyOfElement(elements[i]);…

设置select下拉框不可修改的→“四”←种方法

设置select下拉框为不可修改的几种方法&#xff1a; 因为select的特殊性&#xff0c;导致它不能像input表单一样简单地设置一个readonly来限制修改&#xff0c;所以&#xff0c;我们需要进行别的操作&#xff01; 1、为下拉框添加样式&#xff0c;可以禁用该下拉框(效果和敲地板…

weblogic项目java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配 at oracle.jdbc.....错误解决

原因&#xff1a;数据源配置时间格式问题 解决方案&#xff1a; 1、进入weblogic控制台 2、左侧菜单栏选择Service- JDBC- Data Source 3、选择你的数据源&#xff0c;然后进入Configuration下的Connection Pool中进行添加 点击下面的Advance按钮&#xff0c;展开&#xff0…

Java substring使用时有哪些注意事项?

首先&#xff0c;使用substring截取字符串时&#xff0c;可能会出现两种异常&#xff0c;分别是StringIndexOutOfBoundsException和NullPointerException。 即字符串索引越界异常 与 空指针异常 引起 字符串索引越界异常&#xff08;StringIndexOutOfBoundsException&#xff0…

IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...

使用IDEA项目添加Hibernate扩展&#xff0c;生成实体类并配置实体类中的注解 一、使用Hibernate自动生成实体类 1.在项目上右键&#xff0c;选择Add Framework Support找到 Hibernate勾选 OK 2.CtrlAltShiftS 快捷键呼出Project Structure窗口&#xff0c;展开项目&#xff0c…

Oracle根据日期区间查询Date类型的数据

在Oracle数据库中&#xff0c;根据日期区间查询Date类型的数据 select proposalno,policyno,enddate from 表名 where 时间字段 between to_date(2020-1-1, yyyy/mm/dd) and to_date(2021/8/1,yyyy-mm-dd)

jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理

准备步骤&#xff1a; 1.安装java环境&#xff0c;知道java安装目录 2.将jar包拖放或发送至服务器中&#xff08;目录自定义&#xff09; 一、编写shell脚本&#xff0c;将以下代码放在shell脚本中&#xff0c;将shell脚本放在jar包同级目录下。编写好后使用sh xxx.sh启动脚本即…

RSA签名算法,计算调用加密报文,安全传输

RSA签名算法 1. 获取当前的时间戳参数 2. 计算参数签名 3. 获取请求对象的MD5密文 4. 通过私钥计算某个参数的RSA签名 5. 转换字符集到utf8 6. MD5加密字符串 7. base64编码 8. base64编码字符串 9. base64解码 /*** 参数签名算法工具类*/ public class RSAUtils {/**…

两步完成项目定时启动,java项目定时启动

两步完成项目定时设置&#xff1a; 在需要定时启动或运行的方法上面加上注解Scheduled //当天只跑一次 Scheduled(cron "0 40 21 * * ?")在启动类上加注解EnableScheduling SpringBootApplication EnableScheduling ComponentScan({"com.xxx.xxx.newinterf&qu…

Java Calendar.add()方法的使用,参数含义。指定时间差。

cal.add()方法中的参数含义&#xff1a; 第一个参数如果是1则代表的是对年份操作&#xff0c;2是对月份操作&#xff0c;3是对星期操作&#xff0c;5是对日期操作&#xff0c;11是对小时操作&#xff0c;12是对分钟操作&#xff0c;13是对秒操作&#xff0c;14是对毫秒操作。 …