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

ops/2025/2/26 10:05:07/

使用语言: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/ops/161389.html

相关文章

网络协议 HTTP、HTTPS、HTTP/1.1、HTTP/2 对比分析

1. 基本定义 HTTP&#xff08;HyperText Transfer Protocol&#xff09; 应用层协议&#xff0c;用于客户端与服务器之间的数据传输&#xff08;默认端口 80&#xff09;。 HTTP/1.0&#xff1a;早期版本&#xff0c;每个请求需单独建立 TCP 连接&#xff0c;效率低。HTTP/1.1&…

C语言多人聊天室 ---chat(客户端聊天)

head.h #ifndef __HEAD_H #define __HEAD_H// 常用头文件 #include <stdio.h> #include <stdlib.h> #include <string.h>// 网络编程涉及的头文件 #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h>#include <…

【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取

【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取 一、问题背景 政府的icp备案时&#xff0c;或者某些三方SDK以来的管理后台&#xff0c;都需要配置鸿蒙应用的公钥和证书MD5指纹 二、解决方案 专有名词解释&#xff1a; 华为AppGallery Connect简称 AGC平台&#xff0…

java spring 是什么_Spring详解(一)------概述

本系列教程我们将对 Spring 进行详解的介绍&#xff0c;相信你在看完后一定能够有所收获。 1、什么是 Spring Spring是一个开源框架&#xff0c;Spring是于2003 年兴起的一个轻量级的Java 开发框架&#xff0c;由Rod Johnson 在其著作Expert One-On-One J2EE Development and…

Ollama部署与常用命令

Ollama是一款开源工具&#xff0c;其目标是简化大语言模型在本地环境的部署和使用。它支持多种流行的开源大语言模型&#xff0c;如 Llama 2、Qwen2.5等。 通过Ollama&#xff0c;用户无需具备深厚的技术背景&#xff0c;就能在普通的消费级硬件上快速搭建一个强大的语言处理环…

Spring Boot集成RocketMQ:真实项目应用场景

第一部分&#xff1a;基础配置与简单示例 1. 项目初始化 使用Spring Boot创建一个项目&#xff0c;添加RocketMQ依赖。 POM依赖&#xff08;Maven&#xff09;&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spr…

白帽黑客系列教程之Windows驱动开发(64位环境)入门教程(四)

为什么要写这篇文章呢&#xff1f; 作为一名白帽黑客&#xff0c;如果想要学习ROOTKIT攻防技术&#xff0c;就必须要有能力进行驱动开发&#xff01; 本文章仅提供学习&#xff0c;切勿将其用于不法手段&#xff01; 在Windows操作系统的64位环境中&#xff0c;进行ROOTKIT攻…

网络安全与措施

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 # 网络安全问题概述 1) 数据安全 访问&#xff08;授权访问&#xff09;&#xff1b;存储&#xff08;容灾、备份或异地备份等&#xff09; 2) 应用程序 不能…