首页 > 其他分享 >leedcode 找出字符串中第一个匹配项的下标

leedcode 找出字符串中第一个匹配项的下标

时间:2024-01-22 16:12:54浏览次数:20  
标签:下标 int needle leedcode len str 字符串 return haystack

自己写的

class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
        haystack_len = len(haystack)
        needle_len = len(needle)

        if haystack == needle:
            return 0

        if haystack_len < needle_len:
            return -1
        i = 0

        while i <= haystack_len - needle_len:
            if haystack[i] == needle[0]:  # 遍历haystack如果和needle第一个相同就开始对比

                if needle_len==1:
                    return i
                j = 1
                while j < needle_len:
                    if haystack[i + j] == needle[j]:

                        j += 1

                        if j == needle_len:
                            return i
                    else:
                        i += 1
                        if i == haystack_len - needle_len + 1:
                            return -1
                        break

            else:  # 遍历haystack如果和needle第一个不相同就下一个
                i += 1
                if i == haystack_len - needle_len + 1:
                    return -1

gpt回答

class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
        haystack_len = len(haystack)
        needle_len = len(needle)

        if needle_len == 0:
            return 0

        for i in range(haystack_len - needle_len + 1):
            if haystack[i:i + needle_len] == needle:
                return i

        return -1

 

class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
        haystack_len = len(haystack)
        needle_len = len(needle)

        if needle_len == 0:
            return 0

        for i in range(haystack_len - needle_len + 1):
            # 截取 haystack 中与 needle 长度相同的子串
            current_substring = haystack[i:i + needle_len]
            
            # 检查子串是否与 needle 相等
            if current_substring == needle:
                return i

        # 如果没有找到匹配,返回 -1
        return -1

 

标签:下标,int,needle,leedcode,len,str,字符串,return,haystack
From: https://www.cnblogs.com/yyyjw/p/17980265

相关文章

  • leedcode 移除元素
    自己写的:classSolution:#122334defremoveElement(self,nums,val):numms_len=len(nums)ifnumms_len==0:returnnumms_leni=0whilei<numms_len:ifnums[i]==val:......
  • Python 字符串不可变性的优缺点
    随着计算机技术的快速发展,越来越多的编程语言被发明出来,每种编程语言都有自己独特的特点和优势。以我经常使用python写爬虫为例,在Python中,字符串是不可变的,这意味着一旦字符串被创建,就不能被修改。这与其他一些编程语言(如C++和Java)不同,在这些语言中,字符串是可以被修改的。对于......
  • #yyds干货盘点# LeetCode程序员面试金典:反转字符串中的单词 III
    题目给定一个字符串s,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例1:输入:s="Let'stakeLeetCodecontest"输出:"s'teLekatedoCteeLtsetnoc"示例2:输入:s="MrDing"输出:"rMgniD"代码实现classSolution{publicString......
  • Go语言核心36讲 37 | strings包与字符串操作
    在上一篇文章中,我介绍了Go语言与Unicode编码规范、UTF-8编码格式的渊源及运用。Go语言不但拥有可以独立代表Unicode字符的类型rune,而且还有可以对字符串值进行Unicode字符拆分的for语句。除此之外,标准库中的unicode包及其子包还提供了很多的函数和数据类型,可以帮助我们解析各......
  • 【算法】【字符串】找出字符串中第一个匹配项的下标
    1 题目给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从0开始)。如果 needle 不是 haystack 的一部分,则返回  -1 。示例1:输入:haystack="sadbutsad",needle="sad"输出:0解释:"sad"在下标0......
  • 【算法】【字符串】验证回文串
    1 题目如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。字母和数字都属于字母数字字符。给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。示例1:输入:s="Aman,a......
  • Java将字符串转为list数组
    将字符串转为list数组的实现方法概述在Java开发中,有时候我们需要将一个字符串转换为一个列表数组,以便对其中的元素进行操作和处理。本文将介绍一种常见的实现方法,并提供详细的步骤和示例代码来帮助你完成这个任务。实现步骤下面是实现将字符串转为list数组的一般步骤,你可以按照......
  • Java将json字符串转换为数组的方法
    Java将json字符串转换为数组的方法在Java开发中,经常会遇到将json字符串转换为数组的需求。JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,常用于前后端数据传输和存储。而Java中的JSONArray类可以用来处理json数组。下面将介绍一种常用的方法,用于将json字符串转换为......
  • Java获取两个字符串日期的间隔天数
    Java获取两个字符串日期的间隔天数1.概述在Java中,要计算两个字符串日期之间的间隔天数,首先需要将字符串日期转换为java.util.Date对象,然后通过对比两个Date对象的时间戳计算出间隔天数。2.实现步骤步骤描述步骤1将字符串日期转换为java.util.Date对象步骤2获取......
  • Java如何过滤掉一段字符串中出现重复的字母或数字?
    可以使用Java中的HashSet来去除一段字符串中出现重复的字母或数字。HashSet是一个不允许有重复元素的集合,因此可以利用它的特性来去除重复的字符或数字。示例代码如下:importjava.util.HashSet;publicclassRemoveDuplicates{publicstaticvoidmain(String[]args){......