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

找出字符串中第一个匹配项的下标、求解方程----2023/5/2

找出字符串中第一个匹配项的下标、求解方程----2023/5/2

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

输入:haystack = "sadbutsad", needle = "sad"
输出:0
解释:"sad" 在下标 0 和 6 处匹配。
第一个匹配项的下标是 0 ,所以返回 0 。

示例 2:

输入:haystack = "leetcode", needle = "leeto"
输出:-1
解释:"leeto" 没有在 "leetcode" 中出现,所以返回 -1 。

题解:

class Solution:def strStr(self, haystack: str, needle: str) -> int:if len(haystack) == len(needle) and haystack == needle:return 0for index in range(len(haystack) - len(needle)+1):if haystack[index:index+len(needle)] == needle:return indexreturn -1

题解:KMP算法 参考

class Solution:def strStr(self, haystack: str, needle: str) -> int:n = len(haystack)m = len(needle)next = [0]k = 0for i in range(1, m):while k > 0 and needle[k] != needle[i]:k = next[k-1]if needle[k] == needle[i]:k += 1next.append(k)j = 0for i in range(n):while j > 0 and haystack[i] != needle[j]:j = next[j-1]if haystack[i] == needle[j]:j += 1if j == m:return i - j + 1return -1 

提示:
1 <= haystack.length, needle.length <= 104
haystack 和 needle 仅由小写英文字符组成

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

求解一个给定的方程,将x以字符串 “x=#value” 的形式返回。该方程仅包含 ‘+’ , ‘-’ 操作,变量 x 和其对应系数。
如果方程没有解或存在的解不为整数,请返回 “No solution” 。如果方程有无限解,则返回 “Infinite solutions” 。
题目保证,如果方程中只有一个解,则 ‘x’ 的值是一个整数。

示例1:

输入: equation = "x+5-3+x=6+x-2"
输出: "x=2"

示例2:

输入: equation = "x=x"
输出: "Infinite solutions"

示例3:

输入: equation = "2x=x"
输出: "x=0"

提示:
3 <= equation.length <= 1000
equation 只有一个 ‘=’.
方程由绝对值在 [0, 100] 范围内且无任何前导零的整数和变量 ‘x’ 组成。

题解:

class Solution:def scanner(self, strs):x, nums = 0, 0len_strs = len(strs)if strs[0] == '-1':sign = -1else:sign = 1num = 0flag = -1for start in range(len_strs):if strs[start] == '-':nums += sign * numnum, mul = 0, 0sign = -1elif strs[start] == '+':nums += sign * numnum, mul = 0, 0sign = 1elif strs[start] == 'x':if num == 0:if flag == 0:x += 0else:x += 1 * signelse:x += sign * numnum, mul = 0, 0else:num = 10 * num + int(strs[start])if num == 0:flag = 0if num != 0:nums += sign * numreturn x, numsdef solveEquation(self, equation: str) -> str:left, right = equation.split("=")left_x, left_nums = self.scanner(left)right_x, right_nums = self.scanner(right)x = left_x - right_x nums = right_nums - left_numsif x == 0:if nums == 0:return "Infinite solutions"else:return "No solution"if x != 0 and nums == 0:return "x=0"return f"x={nums//x}"

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/solve-the-equation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

http://www.lryc.cn/news/63852.html

相关文章:

  • 23:宁以non-member、non-friend替换member函数
  • Centos7安装Redis
  • Android 项目必备(四十五)-->2023 年如何构建 Android 应用程序
  • 改进YOLOv5: | 涨点神器 | 即插即用| ICLR 2022!Intel提出ODConv:即插即用的动态卷积
  • ( 数组和矩阵) 485. 最大连续 1 的个数 ——【Leetcode每日一题】
  • 从0搭建Vue3组件库(十一): 集成项目的编程规范工具链(ESlint+Prettier+Stylelint)
  • Mysql 苞米豆 多数据源 读写分离(小项目可用)
  • OJ练习第90题——删除字符使频率相同
  • 云原生Istio基本介绍
  • Vue(简单了解Cookie、生命周期)
  • 57.网页设计图标实战
  • 浅析AI视频智能检测技术在城市管理中的场景应用
  • unity中的Line Renderer
  • 【数据架构系列-06】一文搞懂数据模型的3中类型——概念模型、逻辑模型、物理模型
  • Java——Java面向对象
  • MyBatis:生命周期、作用域、结果集映射 ResultMap、日志、分页、使用注解开发、Lombok
  • PostgreSQL安装和开启SSL加密连接【配置双向认证】
  • 【ShenYu系列】ShenYu Dubbo插件全流程源码解析
  • spring解决循环依赖的三级缓存
  • C++ - 标准库(STL)
  • Java使用 Scanner连续输入int, String 异常错误输出原因分析
  • pt13网络编程
  • 华为云 绑定/更换证书
  • 重大问题,Windows11出现重大BUG
  • 傅里叶变换解析
  • 你的登录接口真的安全吗?
  • ChatGPT情商很高,但并不适合当搜索引擎
  • Mac 地址与 IP 地址有什么区别?
  • bootloaders
  • PC或服务器装双系统