当前位置: 首页 > article >正文

LeetCode:3083. 字符串及其反转中是否存在同一子字符串(哈希 Java)

目录

3083. 字符串及其反转中是否存在同一子字符串

题目描述:

实现代码与解析:

二进制哈希

原理思路:


3083. 字符串及其反转中是否存在同一子字符串

题目描述:

        给你一个字符串 s ,请你判断字符串 s 是否存在一个长度为 2 的子字符串,在其反转后的字符串中也出现。

如果存在这样的子字符串,返回 true;如果不存在,返回 false 。

示例 1:

输入:s = "leetcode"

输出:true

解释:子字符串 "ee" 的长度为 2,它也出现在 reverse(s) == "edocteel" 中。

示例 2:

输入:s = "abcba"

输出:true

解释:所有长度为 2 的子字符串 "ab""bc""cb""ba" 也都出现在 reverse(s) == "abcba" 中。

示例 3:

输入:s = "abcd"

输出:false

解释:字符串 s 中不存在满足「在其反转后的字符串中也出现」且长度为 2 的子字符串。

提示:

  • 1 <= s.length <= 100
  • 字符串 s 仅由小写英文字母组成。

实现代码与解析:

二进制哈希

class Solution {
    public boolean isSubstringPresent(String s) {
        char[] cs = s.toCharArray();

        int[] hash = new int[26];

        for (int i = 1; i < cs.length; i++) {
            int x = cs[i - 1] - 'a';
            int y = cs[i] - 'a';
            hash[x] |= 1 << y;
            if ((hash[y] >> x & 1) > 0) {
                return true;
            }
        }
        return false;
    }
}

原理思路:

        hash判断一下长度为2的子串是否已经被遍历过即可。因为字母有限,可以直接用二进制来代表一个纬度的hash。


http://www.kler.cn/a/458305.html

相关文章:

  • 永磁同步电机负载估计算法--自适应龙伯格观测器
  • JR-RLAA系20路模拟音频多功能编码器
  • 华为配置 之 RIP
  • MySQL与标准SQL的区别
  • 【Java 新特性】深入浅出 Java Lambda 表达式
  • 使用three.js 实现vr全景图展示,复制即可用
  • VM虚拟机配置ubuntu网络
  • 机器人C++开源库The Robotics Library (RL)使用手册(三)
  • 小程序配置文件 —— 16 项目配置文件和配置 sass
  • 拉取docker run hello-world失败
  • 【每日学点鸿蒙知识】渐变效果、Web组件注册对象报错、深拷贝list、loadContent数据共享、半屏弹窗
  • 【连续学习之VCL算法】2017年论文:Variational continual learning
  • 【开源框架】从零到一:AutoGen Studio开源框架-UI层环境安装与智能体操作全攻略
  • 【MySQL篇】事务的认识以及四大特性
  • “Gold-YOLO:基于聚合与分发机制的高效目标检测新范式”
  • 反向传播算法:神经网络的学习秘诀
  • 防火墙原理介绍大全
  • 最新SQL Server 2022保姆级安装教程【附安装包】
  • 面试知识点汇总_04
  • fpga系列 HDL:ModelSim显示模拟波形+十进制格式数值(临时方法和设置持久化的默认值)
  • 数字图像相关DIC技术用于机械臂自动化焊接全场变形测量
  • YOLOv11模型改进-模块-引入多尺度大核注意力Multi-scale Large Kernel Attention
  • 儿童教育网站:客户服务与学习支持模块
  • SpringBoot导出Excel的四种方式
  • 告别 $arr[0]: PHP 和 Laravel 中更优雅的数组处理方式
  • 五子棋小游戏设计(Matlab)