算法练习-LeetCode1071. Greatest Common Divisor of Strings

题目地址:LeetCode - The World's Leading Online Programming Learning Platform

Description: For two strings s and t, we say "t divides s" if and only if s = t + ... + t (i.e., t is concatenated with itself one or more times).

Given two strings str1 and str2, return the largest string x such that x divides both str1 and str2.

Example 1:

Input: str1 = "ABCABC", str2 = "ABC"
Output: "ABC"

Example 2:

Input: str1 = "ABABAB", str2 = "ABAB"
Output: "AB"

Example 3:

Input: str1 = "LEET", str2 = "CODE"
Output: ""

 这道题一开没有想出来就直接放弃看别人的做法,看完之后才发现难怪自己想不粗来。真的不看别人的思路,直接看代码都看不懂😭。

参考的之后写的解题代码如下:

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

思路:

(1)Corner Case:两个String 要有 Greatest Common Divisor(GCD)的话,左边右边拼接起来都应该是完全一样的,不能存在不同的情况:

"ABCEABCEABCE" + "ABCE" = "ABCEABCEABCEABCE"

"ABCE" + "ABCEABCEABCE" = "ABCEABCEABCEABCE"

如果存在不同的情况,就不存在最大GCD:

"ABAB" + "BB" = "ABABBB"

"BB" + "ABAB" = "BBABAB"

(2)存在GCD的情况下,如下其GCD的长度是两个String长度的最大公因子:

"ABCEABCEABCE" + "ABCE" = "ABCEABCEABCEABCE"

               12                        4                 ->      4 (最大公因子 = GCD长度)

"ABCE" + "ABCEABCEABCE" = "ABCEABCEABCEABCE"

通过递归找到GCD长度:

 public int getGcd(int a , int b){if(b == 0) return a;return getGcd(b,a%b);}

然后通过找到的GCD长度substring其中任意一个string就能找到GCD。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/11764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 交叉编译openssl + pahomqtt

(一)交叉编译openssl 1 下载openssl 下载链接:/source/index.html 2 解压openssl tar -xzvf openssl-3.0.9.tar.gz 3 配置其config编译条件 ~/Downloads/openssl-3.0.9$ ./config no-asm -shared --prefix/home/cidi/Downloads/openss…

【华为OD机试】模拟消息队列【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 让我们来模拟一个消息队列的运作,有一个发布者和若干消费者, 发布者会在给定的时刻向消息队列发送消息若此时消息队列有消费者订阅, 这个消息会被发送到订阅的消费者中优先级最高(输…

springboot 发送邮件,以及邮件工具类 并且解决spring-boot-starter-mail 发送邮件附件乱码或者文件错乱

1、设置系统值 System.setProperty(“mail.mime.splitlongparameters”, “false”); 2、 在创建对象的时候定义编码格式(utf-8): MimeMessageHelper helper new MimeMessageHelper(mes, true, “utf-8”); 3、 其次,在添加附件的时候,附…

安全基础 --- html基础标签 + DNS工作原理

html基础标签 &#xff08;1&#xff09;id id属性是元素在网页内的唯一标识符。 比如&#xff0c;网页可能包含多个<p>标签&#xff0c;id属性可以指定每个<p>标签的唯一标识符。 <p id"p1"></p> <p id"p2"></p>…

React的hooks---useReducer

useReducer 作为 useState 的代替方案&#xff0c;在某些场景下使用更加适合&#xff0c;例如 state 逻辑较复杂且包含多个子值&#xff0c;或者下一个 state 依赖于之前的 state 等。 使用 useReducer 还能给那些会触发深更新的组件做性能优化&#xff0c;因为父组件可以向自…

linux terminal显示git分支

首先查看PS1&#xff1a; echo $PS1 在.bashrc中添加下面修改&#xff1a; function git_branch {branch"git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //""if [ "${branch}" ! "" ];thenif [[ $branch *&…

华为OD机考--阿里巴巴黄金箱

题目内容 贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现了强盗集团的藏宝地&#xff0c;藏宝地有编号从0~N的箱子每个箱子上面贴有一个数字箱子中可能有一个黄金宝箱。 黄金宝箱满足排在它之前的所有箱子数字和等于排在它之后的所有箱子数字之和; 一个箱子左边部分…

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jul 2023)

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jul 2023) Windows 11, version 22H2 官方原版&#xff0c;2023 年 7 月 更新 请访问原文链接&#xff1a;https://sysin.org/blog/windows-11/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作…

vue实现excel数据下载,后端提供的list由前端转excel并下载

前言,因为项目需求需要,我们需要把后端传来的list转成excel模板,并且下载下来) 之前有用的插件,但是会有少0的情况,如下 所以采用另一个项目用过的方法,最终完美实现效果,如下: 1,首先我们来看下后端提供的数据结构 2,具体前端代码如下 封装的组件,需要的同学直接copy就行(这…

苍穹外卖Day01项目日志

1.软件开发流程和人员分工是怎样的&#xff1f; 软件开发流程 一个软件是怎么被开发出来的&#xff1f; 需求分析 先得知道软件定位人群、用户群体、有什么功能、要实现什么效果等。 需要得到需求规格说明书、产品原型。 需求规格说明书 其中前后端工程师要关注的就是产品原…

nginx启动报 ssl parameter requires ngx_http_ssl_module

更新网站安全证书时报上面的错&#xff0c;解决步骤&#xff1a; 问题分析 原因&#xff1a;nginx缺少http_ssl_module模块&#xff0c;编译安装的时候带上–with-http_ssl_module配置就行了&#xff0c;但是现在的情况是我的nginx已经安装过了&#xff0c;怎么添加模块&…

IP代理技术在网络安全与爬虫应用中的优势与挑战

一、IP代理技术简介 IP代理是一种将客户端请求通过中间服务器转发至目标服务器的网络技术。通过代理服务器&#xff0c;客户端的真实IP地址被隐藏&#xff0c;从而提高用户的匿名性和隐私保护。常见的IP代理类型有HTTP代理和SOCKS代理。 二、IP代理在网络安全中的应用 防止DOS…

数据库缓存服务——NoSQL之Redis配置与优化

目录 一、缓存概念 1.1 系统缓存 1.2 缓存保存位置及分层结构 1.2.1 DNS缓存 1.2.2 应用层缓存 1.2.3 数据层缓存 1.2.4 硬件缓存 二、关系型数据库与非关系型数据库 2.1 关系型数据库 2.2 非关系型数据库 2.3 关系型数据库和非关系型数据库区别&#xff1a; 2.4 非…

B076-项目实战--宠物上下架 展示 领养 收购订单

目录 上下架功能提供后台宠物列表实现 前台展示前台宠物列表和详情展示店铺展示 领养分析前台后端PetControllerPetServiceImpl 订单需求分析可能产生订单的模块订单模块额外功能 订单设计表设计流程设计 集成基础代码收购订单创建订单前端后端 上下架功能提供 后台宠物列表实…

深度学习算法的计算量

文章目录 一、FLOPs与FLOPS二、参数量parameters三、Latency与FPS四、结论 一、FLOPs与FLOPS 二、参数量parameters 三、Latency与FPS 四、结论

Spring 项目过程及如何使用 Spring

文章目录 1.创建 Spring 项目步骤1.1 创建 Maven 项目1.2添加 Spring 框架支持1.3 添加启动项2.如何使用 Spring2.1 存储 Bean 对象2.1.1 创建 Bean对象2.1.2 将 Bean对象注册到容器中 2.2 获取并使用 Bean对象2.2.1 使用 ApplicationContext 获取对象2.2.2 使用 BeanFactory 获…

基于LoRA进行Stable Diffusion的微调

文章目录 基于LoRA进行Stable Diffusion的微调数据集模型下载环境配置微调过程 推理WebUI部署 基于LoRA进行Stable Diffusion的微调 数据集 本次微调使用的数据集为&#xff1a; LambdaLabs的Pokemon数据集 使用git clone命令下载数据集 git clone https://huggingface.co/…

快速排序qsort讲解

hello大家好&#xff0c;我是c语言boom家宝&#xff0c;今天为大家分享的博客内容是qsort快速排序&#xff0c;简称快排的一个知识点的讲解。 在讲到快排之前&#xff0c;允许博主先提一嘴冒泡排序。大家在c语言的学习过程中&#xff0c;冒泡排序是必不可少会学习到的一个思想&…

有关合泰BA45F5260中断的思考

最近看前辈写的代码&#xff0c;发现这样一段代码&#xff1a; #ifdef SUPPORT_RF_NET_FUNCTION if(UART_INT_is_L()) { TmrInsertTimer(eTmrHdlUartRxDelay,TMR_PERIOD(2000),NULL); break; } #endif 其中UART_INT_is_L&am…

python连接mysql数据库

1、安装mysql模块 pip install pymysql2、创建表结构 先自己安装一个数据库&#xff0c;并在navicat 中创建表结构 创建unicom的数据 create database unicom DEFAULT CHARSET utf8 COLLATE utf8_general_ci;创建admin的表&#xff0c;包含id, username,password、mobile C…