当前位置: 首页> 游戏> 网游 > 西安做网站公司8_中国企业500强营业收入_杭州seo整站优化_湖南seo排名

西安做网站公司8_中国企业500强营业收入_杭州seo整站优化_湖南seo排名

时间:2025/7/8 14:32:18来源:https://blog.csdn.net/m0_74672734/article/details/145854728 浏览次数:0次
西安做网站公司8_中国企业500强营业收入_杭州seo整站优化_湖南seo排名

使用语言: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循环走完都没有的话,那说明没有最大公约数}};

关键字:西安做网站公司8_中国企业500强营业收入_杭州seo整站优化_湖南seo排名

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: