Leetcode-234,844,19

2023-05-16

234-回文链表

请判断一个链表是否为回文链表。

示例 1:


输入: 1->2
输出: false  

示例 2:


输入: 1->2->2->1
输出: true  

思路:本想将链表逆置然后进行比较,后来想了想用栈去做更简单,因为栈的性质是先进后出,所以就相当于给逆置了,每次只需要比较链表当前结点的值和栈顶的值是否相等就行,如果出现有一个不相等的情况就返回false,否则就返回true。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isPalindrome(ListNode head) {
       Stack stack = new Stack<>();
            ListNode node = head;
            while(node != null){
                stack.push(node.val);
                node = node.next;
            }
            while(!stack.isEmpty()){
                int val = (int) stack.pop();
                if(head.val != val){
                    return false;
                }
                head = head.next;
            }
        return true;
    }
}

 

844-比较含退格的字符串

给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。

注意:如果对空文本输入退格字符,文本继续为空。

 

示例 1:

输入:S = "ab#c", T = "ad#c"
输出:true
解释:S 和 T 都会变成 “ac”。
示例 2:

输入:S = "ab##", T = "c#d#"
输出:true
解释:S 和 T 都会变成 “”。
示例 3:

输入:S = "a##c", T = "#a#c"
输出:true
解释:S 和 T 都会变成 “c”。
示例 4:

输入:S = "a#c", T = "b"
输出:false
解释:S 会变成 “c”,但 T 仍然是 “b”。
 

提示:

1 <= S.length <= 200
1 <= T.length <= 200
S 和 T 只含有小写字母以及字符 '#'。

 

思路:用两个栈来存储字符,遇到#就出栈一个元素,最后比较这两个栈是否相等即可,我这里其实可以将两个栈的代码写一个函数,然后只用调用就行可以减少代码量。

    class Solution {
        public boolean backspaceCompare(String S, String T) {
            if (S.length() < 1 || T.length() < 1 || S == null || T == null) {
                return false;
            }
            int len = S.length() < T.length() ? T.length() : S.length();
            Stack stack = new Stack();
            Stack stack1 = new Stack();
            for (int i = 0; i < S.length(); i++) {
                if(S.charAt(i) != '#'){
                    stack.push(S.charAt(i));
                }else{
                    if(stack.size()<1){
                        continue;
                    }else {
                        stack.pop();
                    }
                }
            }
            for (int i = 0; i < T.length(); i++) {
                if(T.charAt(i) != '#'){
                    stack1.push(T.charAt(i));
                }else{
                    if(stack1.size()<1){
                        continue;
                    }else {
                        stack1.pop();
                    }
                }
            }

            return stack.equals(stack1)?true:false;
        }
        }

 

19-删除链表的倒数第N个结点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.

当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:

给定的 n 保证是有效的。

 

思路:通过快慢指针来做,先让快指针走到要删除的结点位置,然后此时慢指针还是指向头结点,这时让两个指针同时前进,当fast指针为空的时候,就说明慢指针已经指向了要删除的结点位置,这时候只需要将慢指针的前一个结点指向当前结点的下一个结点即可,因此要定义一个结点来保存慢指针的前一个结点的值。

class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        if (head == null || n <= 0) {
            return null;
        }
        ListNode newHead = new ListNode(0);
        newHead.next = head;
        ListNode slow = head;
        ListNode fast = head;
        int count = 0;
        while(count < n) {
            fast = fast.next;
            count++;
        }
        ListNode preSlow = newHead;
        while(fast != null) {
            preSlow = preSlow.next;
            slow = slow.next;
            fast = fast.next;
        }
        preSlow.next = slow.next;
        return newHead.next;
    }
}

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Leetcode-234,844,19 的相关文章

随机推荐

  • STM32F407多路串口通信进行数据收发

    一直被说是就不能把几个串口放在一起 xff0c 写个标准例程直接用 xff0c 非要每次用哪个串口才现场改程序 xff0c 被迫把usart1 usart2 usart3进行了资源整合 xff0c 挂在这以备不时之需 功能简述 xff1a
  • 基于Keras实现电影评论文本分类与RNN实现

    notebook使用评论文本将影评分为积极 xff08 positive xff09 或消极 xff08 nagetive xff09 两类 这是一个二元 xff08 binary xff09 或者二分类问题 xff0c 一种重要且应用广泛
  • 基于STM32F407的七要素气象站(气象传感器)CR-WS数据处理实现

    一 七要素气象站介绍 1 七要素气象站介绍 开发板还是采用STM32F407 485连线 xff1a 如果买了变送器就按照下图连线 xff1a 没有买变送器的话 xff0c 直接从气象站上拉线 xff0c 红正黑负 xff0c 黄485 A
  • MyBatis Plus 分页查询,total字段为0,分页未生效

    1 未配置 MybatisPlusInterceptor 64 Bean public MybatisPlusInterceptor mybatisPlusInterceptor MybatisPlusInterceptor interce
  • JavaSE学习记录-整数逆序+数组删除元素

    数组定义方法 int arr 61 new int 10 定义同时进行赋值 xff1a int arr 61 new int 1 2 3 4 5 数组打印方法 1 for循环打印 for int i 61 0 i lt arr length
  • FAFTS文件系统常用函数学习

    一 FATFS文件系统基础知识 1 简介 文件系统可以从官网进行下载 官网地址 xff1a http elm chan org fsw ff 00index e html FATFS是一个完全免费开源的FAT 文件系统模块 xff0c Fa
  • Leetcode-旋转数组+最后一个单词长度

    给定一个数组 xff0c 将数组中的元素向右移动 k 个位置 xff0c 其中 k 是非负数 示例 1 输入 1 2 3 4 5 6 7 和 k 61 3 输出 5 6 7 1 2 3 4 解释 向右旋转 1 步 7 1 2 3 4 5 6
  • Leetcode-最短路径和+最大子串和(动态规划)

    给定一个包含非负整数的 m x n 网格 xff0c 请找出一条从左上角到右下角的路径 xff0c 使得路径上的数字总和为最小 说明 xff1a 每次只能向下或者向右移动一步 示例 输入 1 3 1 1 5 1 4 2 1 输出 7 解释
  • LeetCode-二进制串和+宝石与石头

    给你两个二进制字符串 xff0c 返回它们的和 xff08 用二进制表示 xff09 输入为 非空 字符串且只包含数字 1 和 0 示例 1 输入 a 61 34 11 34 b 61 34 1 34 输出 34 100 34 示例 2 输
  • JavaSE数组练习-句子翻转+字符替换+打印特殊三角

    1 句子翻转 要求 xff1a 给定字符串如 34 hello i am a student 34 xff0c 对英语句子进行翻转 xff0c 并保持英语单词的顺序不变 xff0c 对标点符号当成字母处理 代码实现 xff1a import
  • 视觉SLAM学习--基础篇(SLAM框架及相机模型)

    一 例子 如上图的小萝卜机器人 xff0c 要使其具有自主运动能力至少需要两个条件 xff1a 1 我在什么地方 xff1f 定位 2 周围环境是什么样 xff1f 建图 因此它既需要知道自身的状态 位置 xff0c 也要了解所在的环境 地
  • Linux各类软件安装配置问题记录

    1 Ubuntu侧边栏和顶部栏消失不见 解决方法 xff1a 鼠标右键或者快捷键打开终端输入命令 dconf reset f org compiz 输入命令 setsid unity 一般到这一步侧边栏就会出现了 xff0c 如果没有出现就
  • 代码模拟确定有限自动机(DFA)执行过程

    一个确定有限自动机 xff08 DFA xff09 M是一个五元组 xff1a M 61 xff08 K xff0c xff0c f xff0c S xff0c Z xff09 其中 K是一个有穷集 xff0c 它的每个元素称为一个状态 x
  • 视觉SLAM-Eigen学习实践

    1 Eigen库介绍 Eigen 是一个 C 43 43 开源线性代数库 它提供了快速的有关矩阵的线性代数运算 xff0c 还包括解方程等功能 可以通过sudo apt install libeigen3 dev命令进行安装 xff0c 也
  • 苹果手机存储空间(或称为内存)满了导致黑屏转圈白苹果

    没刷机 xff0c 啥也没干 xff0c 发现把SIM卡拔了再开机就好了 xff0c 然后赶紧去卸载一些软件腾出空间
  • Arrays的toString方法和deepToString方法比较

    因为打印二维数组时用错了方法 xff0c 一般是用Arrays deppToString或者遍历使用toString xff0c 我直接用Arrays toString去打印了二维数组 xff0c 没有打印出正常二维数组的内容 xff0c
  • JavaSE-类与对象+单例模式

    1 类与对象的引用 概念 xff1a 如果一个变量的类型是类类型 xff0c 而非基本类型 xff0c 那么该变量又叫做引用 new testClass 该操作表示创建了一个testClass对象 xff0c 但没有办法访问这个对象 tes
  • JavaSE-类与对象-ATM自主操作系统实现

    学完类与对象的练习小作业 xff0c 主要有三个类 xff1a 银行卡类包含银行卡的相关信息如卡号 xff0c 密码 xff0c 姓名 xff0c 余额 xff1b 银行类中主要定义了一个银行卡数组 xff0c 用来存储当前用户的银行卡信息
  • JavaSE-基于回溯法用类+栈实现迷宫问题

    目录 1 问题描述 2 自定义类栈 3 结点类 4 操作类 5 函数讲解 6 测试类及结果 1 问题描述 输入迷宫大小 xff0c 以及路径 xff0c 0表示可走路径 xff0c 1表示死路 xff0c 从输入矩阵的左上角起点到右下角终口
  • Leetcode-234,844,19

    234 回文链表 请判断一个链表是否为回文链表 示例 1 输入 1 gt 2 输出 false 示例 2 输入 1 gt 2 gt 2 gt 1 输出 true 思路 xff1a 本想将链表逆置然后进行比较 xff0c 后来想了想用栈去做更