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

【LeetCode每日一题】Leetcode 1071.字符串的最大公因子

Leetcode 1071.字符串的最大公因子

题目描述:

对于字符串 s 和 t,只有在 s = t + t + t + … + t + t(t 自身连接 1 次或多次)时,我们才认定 t 能除尽 s。

给定两个字符串 str1 和 str2 。返回 最长字符串 x,要求满足 x 能除尽 str1 且 x 能除尽 str2

示例 1:

输入: str1 = "ABCABC", str2 = "ABC"
输出: "ABC"

示例 2:

输入: str1 = "ABABAB", str2 = "ABAB"
输出: "AB"

示例 3:

输入: str1 = "LEET", str2 = "CODE"
输出: ""

提示:

  • 1 <= str1.length, str2.length <= 1000
  • str1str2 仅由小写字母组成。

Java 实现代码

class Solution {public String gcdOfStrings(String str1, String str2) {if (!str1.concat(str2).equals(str2.concat(str1))) {return "";}return str1.substring(0, gcd(str1.length(), str2.length()));}public int gcd(int a, int b) {int remainder = a % b;while (remainder != 0) {a = b;b = remainder;remainder = a % b;}return b;}
}

解题思路:

  • 核心思想是:对于两个数 a 和 b,它们的最大公约数等于 b 和 a % b 的最大公约数。
  • 如果 a % b 不等于 0,那么递归计算 gcd(b, a % b)。
  • 直到余数为 0,最后返回 b,即最大公约数。

复杂度分析:

  • 时间复杂度:O(n) ,字符串拼接比较是否相等需要 O(n) 的时间复杂度,求两个字符串长度的最大公约数需要 O(logn) 的时间复杂度,所以总时间复杂度为 O(n+logn)=O(n) 。
  • 空间复杂度:O(n) ,程序运行时建立了中间变量用来存储 str1 与 str2 的相加结果
http://www.lryc.cn/news/504837.html

相关文章:

  • 《C++:计算机视觉图像识别与目标检测算法优化的利器》
  • 大模型的构建与部署(2)——数据清洗
  • 试题转excel;word转excel;大风车excel
  • 微信小程序webview和小程序通讯
  • ChatGPT大模型 创作高质量文案的使用教程和案例
  • Vue Web开发(八)
  • element-ui实现table表格的嵌套(table表格嵌套)功能实现
  • 【考前预习】4.计算机网络—网络层
  • 【java】MDC
  • Android 好的开源库
  • Go 语言结构
  • 【漆学军】MT5几个重要类库的使用例子
  • 在 Ubuntu 24.04.1 LTS (WSL) 中使用 openssl 生成 keybox.xml
  • 【JavaSE基础】第十六章:IO流
  • 常见漏洞—SSRF_FastCGI
  • LeetCode 283.移动零(超简单讲解)
  • GIS原理及应用、地理坐标系与投影坐标系
  • 用github镜像加速, --recursive还是去github站怎么处理?
  • ctfshow-web 151-170-文件上传
  • 【电源专题】开关转换器使能(EN)管脚的几种不同方式
  • 5G学习笔记之SNPN系列之ID和广播消息
  • Qt-Advanced-Docking-System配置及使用、心得
  • 【Bolt.new + PromptCoder】三分钟还原油管主页
  • 影像组学+病理组学+深度学习人工智能应用
  • RK3568平台(基础篇)io命令支持
  • Yolov8源码分析
  • Python中的装饰器`@functools.lru_cache`:用法、来源与应用 (中英双语)
  • 思维图(GoT):解锁大模型解决复杂问题的能力
  • 使用winscp从windows访问Ubuntu进行文件传输
  • Java全栈项目:实验室预约管理系统的设计与实现