力扣练习之字符串的最大公因子

news/2025/2/28 19:48:32/

使用语言:c++

题目: 

对于字符串 s 和 t,只有在 s = t + t + t + ... + t + tt 自身连接 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.什么叫约数?

约数其实就是能够整除给定整数的数比如6/3=2,3就是6的约数

约数也称为因数或因子

(易混辨析:质数/合数

质数是指只能被1和它本身整除的自然数,最小的质数是2,也是唯一的偶数质数

合数是指除了1和它本身之外,还能被其他自然数整除的自然数

2.其实length()方法返回的就是整数型了,所以官方题解中所做的强制类型转换的目的可能是为了确保类型明确

 int lenx = (int)s.length() / (int)t.length();

 3.在c++中true表示为1,false表示为0

4.substr用法

string s="hello world";
sub=s.substr(6);//表示提取从索引7到字符串末尾的位置,即world
sub=s.substr(1,4);//表示提取从索引1开始,长度为4的部分。即ello

好了明确这些了以后,给出我参考官方题解写的代码

class Solution {
public:
// 检查是否str是由x组成的bool check(string x,string str){int num=str.length()/x.length();string s;for(int i=0;i<num;i++){s+=x;}return s==str;//判断由num个x堆砌起来的s是否和str一样,如果一样的话则说明x能除尽str}
public:string gcdOfStrings(string str1, string str2) {int len1=str1.length();int len2=str2.length();int len=min(len1,len2);for(int i=len;i>0;i--){//因为题目要求求取最长字符串,所以从长度大的开始枚举if(len1%i==0&&len2%i==0){//只有长度能被整除,这个字符串才有可能除尽str//因为x必定是要整除str1和str2的,所以不用求取到底截取谁的字符串,哪一个都一样string x=str1.substr(0,i);if(check(x,str1)&&check(x,str2))return x;//都能除尽,说明找到了}}return "";//如果for循环走完都没有的话,那说明没有最大公约数}};


http://www.ppmy.cn/news/1575580.html

相关文章

【Java项目】基于Spring Boot的口腔管理系统

技术简介&#xff1a;采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介&#xff1a;管理员&#xff1a;首页、个人中心、会员管理、病例就诊信息管理、牙齿保健产品管理、复查提醒管理、预约挂号管理、药品信息管理、留言板管理、系统管理、订单管理。会员&…

Spring Boot2.0之十 使用自定义注解、Json序列化器实现自动转换字典类型字段

前言 项目中经常需要后端将字典类型字段值的中文名称返回给前端。通过sql中关联字典表或者自定义函数不仅影响性能还不能使用mybatisplus自带的查询方法&#xff0c;所以推荐使用自定义注解、Json序列化器&#xff0c;Spring的缓存功能实现自动转换字典类型字段。以下实现Spri…

云原生周刊:云原生和 AI

开源项目推荐 FlashMLA DeepSeek 于北京时间 2025 年 2 月 24 日上午 9 点正式开源了 FlashMLA 项目。FlashMLA 是专为 NVIDIA Hopper 架构 GPU&#xff08;如 H100、H800&#xff09;优化的高效多头潜在注意力&#xff08;MLA&#xff09;解码内核&#xff0c;旨在提升大模型…

如何实现日志采集以及存储以及问题排查

以下是10个可以实现从机器上采集日志并存储到HDFS或Elasticsearch&#xff08;ES&#xff09;中的开源项目推荐&#xff0c;这些项目可以帮助您高效地完成日志采集和存储任务&#xff0c;便于后续的问题排查&#xff1a; 1. **Apache Flume** Apache Flume 是一个分布式、…

计算机网络————(一)HTTP讲解

基础内容分类 从TCP/IP协议栈为依托&#xff0c;由上至下、从应用层到基础设施介绍协议。 1.应用层&#xff1a; HTTP/1.1 Websocket HTTP/2.0 2.应用层的安全基础设施 LTS/SSL 3.传输层 TCP 4.网络层及数据链路层 IP层和以太网 HTTP协议 网络页面形成基本 流程&#xff1a…

绕过信息过滤与注入限制

绕过 information_schema 过滤 information_schema 是 MySQL 中存储元数据的系统数据库&#xff0c;常用于 SQL 注入中获取表名、列名等信息。当 information_schema 被过滤时&#xff0c;可以通过以下方法绕过。 1 替代视图 使用 sys 库&#xff08;MySQL 5.7&#xff09; …

【Deepseek】根文件系统挂载在/dev/sda1下,如何对其扩容

1. 扩展虚拟磁盘大小 首先&#xff0c;需要在虚拟机管理工具中扩展虚拟磁盘的大小。以下是常见虚拟机工具的扩展方法&#xff1a; VMware: 关闭虚拟机。在 VMware 中右键虚拟机 -> 设置 -> 硬盘 -> 扩展&#xff0c;调整磁盘大小。启动虚拟机。 VirtualBox: 关闭虚拟…

【idea】关于idea中新建springboot项目Java版本不能选择11和8的解决办法

原因&#xff1a; spring2.X版本在2023年11月24日停止维护了&#xff0c;因此创建spring项目时不再有2.X版本的选项&#xff0c;只能从3.1.X版本开始选择 而Spring3.X版本不支持JDK8&#xff0c;JDK11&#xff0c;最低支持JDK17&#xff0c;因此JDK11也无法选择了 当然&…