算法练习03

news/2025/1/11 5:09:43 标签: 算法, linux, 运维

一、题目

给你两个字符串 haystack和 needle,请你在haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从0开始)。如果 needle不是 haystack 的一部分,则返回-1。

  • 示例 1:输入:haystack="sadbutsad",needle ="sad"。输出:@

解释:"sad”在下标 0和6 处匹配。第一个匹配项的下标是0,所以返回0

  • 示例 2:输入:haystack="leetcode",needle ="leeto"。输出:-1

解释:"leeto"没有在“leetcode”中出现,所以返回-1

二、实现思路

1. 从 haystack 的第一个字符开始,逐个检查从该字符开始的子字符串是否与 needle 相等。

2. 如果找到了匹配的子字符串,则返回该子字符串的起始下标。

3. 如果遍历完整个 haystack 仍未找到匹配的子字符串,则返回 -1。

三、代码实现

package com.thor.test;


public class Demo {
    public static void main(String[] args) {
        //创建一个Solution
        Solution solution = new Solution();
        //示例 1: 输入:haystack="sadbutsad",needle ="sad" 输出:@ 解释:"sad”在下标 0和6 处匹配。 第一个匹配项的下标是0,所以返回0
        String haystack="sadbutsad";
        String needle="sad";
        int result = solution.strStr(haystack, needle);
        System.out.println(result);//0
        //示例 2: 输入:haystack="leetcode",needle ="leeto" 输出:-1 解释:"leeto”不存在于“leetcode”中,所以返回-1
        haystack="leetcode";
        needle="leeto";
        result = solution.strStr(haystack, needle);
        System.out.println(result);//-1

    }
}
class Solution {
    /**
     * @description:
     * @author: Allen
     * @date: 2025/1/9 15:15
     * @param: [haystack, needle]
     * @return:
     **/
    public int strStr(String haystack, String needle){
        //获取haystack的长度和needle的长度
        int n=haystack.length();
        int m=needle.length();
        //如果needle为空,则返回0
        if(m==0){
            return 0;
        }
        //遍历hatstack,检查从每个位置开始的字字符串是否与needle匹配
        for(int i=0;i<=n-m;i++){
            //假设从位置i开始匹配
            int j=0;
            //检查needle的每个字符是否与haystack中对应位置的字符匹配
            while(j<m&&haystack.charAt(i+j)==needle.charAt(j)){
                j++;
            }
            //如果j达到了needle的长度,则说明匹配成功,返回i
            if(j==m){
                return i;
            }
        }
        return -1;
    }
}

http://www.niftyadmin.cn/n/5819358.html

相关文章

[ 第36次CCFCSP]梦境巡查

题目背景 传说每当月光遍布西西艾弗岛&#xff0c;总有一道身影默默守护着居民们的美梦。 题目描述 梦境中的西西艾弗岛由 n1 个区域组成。梦境巡查员顿顿每天都会从梦之源&#xff08;0 号区域&#xff09;出发&#xff0c;顺次巡查 1,2,⋯ ,n 号区域&#xff0c;最后从 n…

GAN的应用

5、GAN的应用 ​ GANs是一个强大的生成模型&#xff0c;它可以使用随机向量生成逼真的样本。我们既不需要知道明确的真实数据分布&#xff0c;也不需要任何数学假设。这些优点使得GANs被广泛应用于图像处理、计算机视觉、序列数据等领域。上图是基于GANs的实际应用场景对不同G…

c++ 缺省函数

定义 “缺省函数” 通常是指在编程语言或其他情境中&#xff0c;当没有明确指定某个函数的具体实现或参数值时&#xff0c;所采用的默认函数或默认行为。以下是关于缺省函数的一些主要信息&#xff1a; 作用&#xff1a;为函数提供默认的实现或参数值&#xff0c;使得在调用函…

fail api scope is not declared in the privacy agreement微信小程序uniapp 解决录音无法播放、授权

已解决 fail api scope is not declared in the privacy agreement微信小程序uniapp 解决录音无法播放、授权 没有声明内容协议导致的 微信公众平台&#xff1a;https://mp.weixin.qq.com/【1.左下角的-移动过去后会出现 “帐号设置”】 【2.基本设置->服务内容声明->修…

如何在 Ubuntu 22.04 上部署 BorgBackup 并实现自动化备份教程

简介 BorgBackup&#xff0c;也称为 Borg&#xff0c;是一个强大的、具有去重功能的备份程序&#xff0c;专为效率和安全性而设计。它提供了诸如压缩和身份验证加密等高级功能&#xff0c;使其成为可靠备份的理想选择。本教程提供了一个关于在 Linux 系统上安装、配置和自动化…

如何在 Ubuntu 24.04 上安装 Memcached 服务器教程

简介 Memcached 是一个高性能、分布式的内存缓存系统&#xff0c;旨在通过减少数据库负载来加速动态 Web 应用程序。它通过将数据和对象缓存在 RAM 中来实现这一点&#xff0c;从而最大限度地减少了从数据库或其他慢速存储层重复获取数据的需要。 本教程的目标是手把手教你如…

【SpringSecurity】二、自定义页面前后端分离

文章目录 1、用户认证流程AuthenticationSuccessHandler AuthenticationFailureHandlerSecurityFilterChain配置用户认证信息 2、会话并发处理2.1、实现处理器接口2.2、SecurityFilterChain配置 1、用户认证流程 AuthenticationSuccessHandler AuthenticationFailureHandler …

走马灯的实现思路-JS版

首先通过JQ提供的方法来获取对应的宽度&#xff0c;如元素完整的被撑开的宽度以及可视区域的宽度&#xff0c;同时进行判断&#xff0c;当元素被撑开的宽度小于元可视区域的宽度的时候&#xff0c;不激活走马灯 然后设置一个变量等于可视区域宽度&#xff0c;随后设置一个变量…