zoukankan      html  css  js  c++  java
  • leetcode28 strStr()

    被这题演了!!!
    少看了一个条件啊啊啊啊啊啊啊,题目是这样的

    实现 strStr() 函数。
    
    给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (0开始)。如果不存在,则返回  -1。
    
    示例 1:
    
    输入: haystack = "hello", needle = "ll"
    输出: 2
    示例 2:
    
    输入: haystack = "aaaaa", needle = "bba"
    输出: -1
    说明:
    
    当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
    
    对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。
    

    题目其实很清楚,但是最后一句话我没有看到,就是当needle为空时返回0,人傻掉了

    import math
    class Solution(object):
        def strStr(self, haystack, needle):
            """
            :type haystack: str
            :type needle: str
            :rtype: int
            """
            if len(haystack) == 0 and len(needle) == 0:
                return 0
            if len(haystack) == 0 and len(needle) != 0:
                return -1
            if len(needle) == 0 and len(haystack):
                return 0
            if len(haystack) < len(needle):
                return -1
            maxlen = max(len(haystack),len(needle))
            minlen = min(len(haystack),len(needle))
            for i in range(maxlen):
                if haystack[i] == needle[0] and maxlen - i >= minlen:
                    for j in range(minlen):
                        if haystack[i+j] == needle[j]:
                            if minlen-1 == j:
                                return i
                            continue
                        else:
                            break
            return -1
    

    我的做法有点暴力(反正我每次写题都是第一反应是什么就先实现2333),就是先找到这两个之中最长和最短,然后遍历那个长的,每找到和较短字串第一个字母相同的就开始遍历下len(minlen)个字串,如果符合就返回,不符合就跳出第二个循环,逻辑简单,但是复杂度较高,到时候优化一下

  • 相关阅读:
    IO 单个文件的多线程拷贝
    day30 进程 同步 异步 阻塞 非阻塞 并发 并行 创建进程 守护进程 僵尸进程与孤儿进程 互斥锁
    day31 进程间通讯,线程
    d29天 上传电影练习 UDP使用 ScketServer模块
    d28 scoket套接字 struct模块
    d27网络编程
    d24 反射,元类
    d23 多态,oop中常用的内置函数 类中常用内置函数
    d22 封装 property装饰器 接口 抽象类 鸭子类型
    d21天 继承
  • 原文地址:https://www.cnblogs.com/yfc0818/p/11072632.html
Copyright © 2011-2022 走看看