xtu oj 连接字符串

文章目录

  • 回顾
  • 思路
  • 代码

回顾

  • A+B III
  • 问题 H: 三角数
  • 问题 G: 3个数
  • 等式 数组下标查询,降低时间复杂度
  • 1405 问题 E: 世界杯
  • xtu 数码串
  • xtu oj 神经网络
  • xtu oj 1167 逆序数(大数据)
  • xtu oj 原根
  • xtu oj 不定方程的正整数解
  • xtu oj 最多的可变换字符串
  • xtu oj String I
  • xtu oj 字母序列
  • xtu oj 分段
  • xtu oj 完全平方数II

思路

  • 这个首先就要注意输入的时候要加上 !=EOF
  • 然后就是要找两个字符串的最长的公共子序列,要求是一个是在前面字符串的后面,另一个在后面字符串的前面,找到最长的重合的部分,然后把两个字符串拼接起来就是答案,最短的时候是两个字符串完全相等,就输出 a 字符串就好,最长的就是完全不等,就直接把两个字符串连接起来。
  • 输入两个字符串, !=EOF 怎么加?
  • 最大是两百,所以哪怕是 n^2 的时间复杂度也是可以接受的,所以应该直接暴力就行了。好像不是 n^2 ,而是 n^3 ,那就是 8*10^6 ,这个时间复杂度也是可以接受的。
  • 题目好像没说两个字符串的长度是相等的,所以要用两个长度变量来分别表示字符串长度。
  • 假设把前面字符串叫做 jjj ,后面字符串叫做 ttt ,一定要是 jjj 的后面的完整一块等于 ttt 的前面的完整一块。也就是说遍历的时候,一定要从开始相等的第一个字母开始,到 jjj 的最后一个元素,中间不能出现不相等的元素,在这个前提下,找一个 jjj 里面下标最小的元素,就好。(原来我最开始想到了这个,但是在代码里面没加这个判断,后面过不了才找到这个错误,感觉完全是运气,所以最好整理思路的时候把条件列出来,写代码的时候把条件限制得严格一些)
  • 观察最后一个样例可以发现,两个字符串可以交换,也就是满足题目里面说的字典序的问题。字典序最小,这个时候等于说有两个条件,一个条件是拼接之后最短,另一个条件是字典序最小。那么我们可以写一个函数,实现两个字符串拼接之后最短,用两个数组存答案,等于说实现的这个函数的参数是两个字符串,这两个字符串先后顺序不一样,就会有不一样的答案,比较答案的长度,输出答案短的,长度相等就输出字典序小的。
  • 比较字典序就是比较每一个字母的大小,反正是存到了数组里面,还是比较容易比较的,字符串拼接函数的一些参数我不是很熟悉,现在查一下。不然只能用数组模拟了。strncat 好像只能拼接字符串前面 n 个字符,所以假设我想从中间开始拼接,还是只能自己模拟一下。
  • 比较两个字符串字典序可以直接用 strcmp 函数,strcmp(ans1,ans2) ,小于零表示 ans1 更小,但是这个函数不能直接比较两个字符串的长度,只能一个一个字母去比较,所以通俗地说,就是比较字典序的一个函数。
    在这里插入图片描述
    哈哈哈,有点难写,有一些细节需要注意。
  • 最后总结一下:这题思路比较直观,找公共的元素,代码细节比较多,一个是要求输出字典序小的,第二是前面字符串要枚举完最后一个元素才算满足条件,第三是两个字符串可能完全没有公共部分,需要特判。

代码

#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#define N 410

char jjj[N];//分别存两个字符串
char ttt[N];

char ans1[N];//存不同字典序的答案
char ans2[N];
void get_ans(char arr1[],char arr2[],char ans[]){
	int len1=strlen(arr1),len2=strlen(arr2);//字符串长度
	bool has_found=false;//特判两个字符串没有满足条件的部分,比如这种,abc,def 这种
	for(int i=0;i<len1;i++){//从第一个字符串前面开始枚举
		bool is_ok=true;
		int max_ans=0;//最多的相同的元素的个数
		bool arr1_out=false;//第一个字符串数组没有枚举到最后一个元素,我们要求第一个字符串数组枚举到了最后一个元素
		for(int j=i,k=0;j<len1&&k<len2;j++,k++){//注意这里的 j 和 k 是同步变化的
			if(j==len1-1){//假设能枚举完第一个字符串的最后一个元素,就说明满足条件
				arr1_out=true;
			}
			if(arr1[j]==arr2[k]){
				max_ans++;
			}else{//只要在枚举过程中出现一个不相等的元素,就结束枚举
				is_ok=false;
				break;
			}
		}
		
		if(is_ok&&arr1_out){//因为从前面开始找的,所以找到的第一个满足条件的就是最大的公共部分,就是答案
			strcpy(ans,arr1);//把字符串拼接好存到答案数组里面
			for(int hhh=len1,j=max_ans;j<len2;hhh++,j++){
				ans[hhh]=arr2[j];
			}
			has_found=true;
			break;
		}
	}
	
	if(has_found==false){//特判没有啥共同元素的情况,abc,def  这种情况
		strcpy(ans,arr1);//把 arr1 和 arr2 拼接起来复制到 ans 答案数组里面
		strcat(ans,arr2);
	}
}

int main(){
	while(scanf("%s%s",jjj,ttt)!=EOF){//多样例输入
		get_ans(jjj,ttt,ans1);//得到两个答案数组
		get_ans(ttt,jjj,ans2);
		
		if(strlen(ans1)<strlen(ans2)){//比较长度
			printf("%s\n",ans1);
		}else if(strlen(ans1)>strlen(ans2)){
			printf("%s\n",ans2);
		}else{
			if(strcmp(ans1,ans2)<=0){//比较字典序
				printf("%s\n",ans1);
			}else{
				printf("%s\n",ans2);
			}
		}
		
		for(int i=0;i<N;i++){//清空数组
			ans1[i]='\0',ans2[i]='\0';
		}
	}
	
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[Prometheus学习笔记]从架构到案例,一站式教程

文章目录 Prometheus 优势Prometheus 的组件、架构Prometheus Server 直接从监控目标中或者间接通过推送网关来拉取监控指标&#xff0c;它在本地存储所有抓取到的样本数据&#xff0c;并对此数据执行一系列规则&#xff0c;以汇总和记录现有数据的新时间序列或生成告警。可以通…

鸿蒙打包hvigorw clean报错No npmrc file is matched in the current user folder解决

问题 在执行hvigorw clean等命令时&#xff0c;报错如下&#xff1a; Error: The hvigor depends on the npmrc file. No npmrc file is matched in the current user folder. Configure the npmrc file first解决方案 在用户当前目录下新建.npmrc文件&#xff0c;并配置如下…

读数据工程之道:设计和构建健壮的数据系统27转换

1. 转换 1.1. 转换与查询不同 1.1.1. 查询是根据过滤和连接逻辑从各种来源检索数据 1.1.2. 转换将结果持久化&#xff0c;供其他转换或查询使用 1.1.2.1. 结果可以被短暂地或永久地保存 1.1.3. 除了持久性&#xff0c;转换区别于查询的另一个特点是复杂性 1.1.3.1. 你可能会建…

市场分化!汽车零部件「变天」

全球汽车市场的动荡不安&#xff0c;还在持续。 本周&#xff0c;全球TOP20汽车零部件公司—安波福&#xff08;Aptiv&#xff09;发布2024年第三季度财报显示&#xff0c;三季度公司经调整后确认收入同比下降6%&#xff1b;按照区域市场来看&#xff0c;也几乎是清一色的下滑景…

Java面试经典 150 题.P26. 删除有序数组中的重复项(003)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public int removeDuplicates(int[] nums) …

ONLYOFFICE 8.2版本桌面编辑器评测

目录 ONLYOFFICE 8.2版本桌面编辑器评测一、引言二、ONLYOFFICE 桌面编辑器概述2.1 功能特点2.2 系统支持2.3 数据表&#xff1a;ONLYOFFICE 桌面编辑器功能概述 三、ONLYOFFICE 协作空间3.1 协作功能3.2 部署和集成3.3 数据表&#xff1a;ONLYOFFICE 协作空间功能概述 四、ONL…

管道缺陷图像分割系统:入门训练营

管道缺陷图像分割系统源码&#xff06;数据集分享 [yolov8-seg-vanillanet&#xff06;yolov8-seg-C2f-DiverseBranchBlock等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源…

【文件处理】二、批处理(.bat) - 批量修改文件拓展名

一、简介 批处理&#xff08;Batch Processing&#xff09;是一种广泛应用于Dos和Windows系统种的脚本语言&#xff1b;它允许用户将一些列名称或程序组合在一起&#xff0c;形成可一次性执行的批处理文件。批处理文件的拓展名通常为".bat"、“.cmd”、".btm&q…

go-logger v0.27.0 - 并发性能为官方库 10 倍

go-logger是一个高性能的 golang 日志库&#xff0c;旨在提供快速、轻量级的日志记录功能 Github 使用文档 v0.27.0 更新内容 优化内存分配优化写数据性能增加日志属性自定义函数增加各个日志级别格式化打印函数 说明 性能优化是该版本最重要的更新内容。性能优化的结果&…

大零售时代下融合发展的新路径:定制开发技术的应用与思考

摘要&#xff1a;本文探讨在大零售背景下&#xff0c;传统零售边界模糊&#xff0c;融合成为趋势。分析大零售包含的跨行业跨业态融合等三个层面&#xff0c;重点阐述定制开发技术中的 21 链动模式、AI 智能名片和 S2B2C 商城小程序在推动大零售发展中的作用和意义&#xff0c;…

qt QSplitter详解

1、概述 QSplitter是Qt框架中的一个布局管理器类&#xff0c;它允许用户在应用程序窗口中创建可拖动的分隔器&#xff0c;以便动态地调整多个子窗口或控件的大小。QSplitter非常适合用于分割、重新排列和管理用户界面中的多个区域&#xff0c;提供了一种直观且灵活的方式来控制…

【6G 需求与定义】ITU(国际电联)对全球6G标准的愿景

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

《高频电子线路》—— 调幅电路

文章内容来源于【中国大学MOOC 华中科技大学通信&#xff08;高频&#xff09;电子线路精品公开课】&#xff0c;此篇文章仅作为笔记分享。 目录 调幅电路 分类 小结 模拟相乘器调幅电路 流程图比较 集成电路MC1596G实例 小结 单边带调幅电路 滤波法 移相法 修正的移相…

[java][框架]springMVC(1/2)

目标 知道SpringMVC的优点编写SpringMVC入门案例使用PostMan发送请求掌握普通类型参数传递掌握POJO类型参数传递掌握json数据参数传递掌握响应json数据掌握rest风格快速开发 一、SpringMVC简介 1 SpringMVC概述 问题导入 SpringMVC框架有什么优点&#xff1f; 1.1 Spring…

零基础玩转IPC之——如何实现远程实时查看监控视频(P2P)

P2P是peer-to-peer的简称&#xff0c;又称为点对点技术&#xff0c;是没有中心服务器、依靠用户群节点进行信息交换的对等式网络。区别于传统的C/S中央服务器结构&#xff0c;P2P网络中每一个用户节点即是客户端又是服务端&#xff0c;能同时作为服务器给其他节点提供服务。 优…

医院场景下电气设备的谐波治理

随着各种电气设备在医院诊疗中的使用越来越广泛&#xff0c;谐波源越来越多&#xff0c;造成线路及电源处的谐波污染也越来越大。某医院变电所有电源进线柜3个&#xff0c;现场的配电系统存在以下问题&#xff1a;出现配电线路损耗增大、发热、缩短绝缘寿命&#xff1b;出现电容…

电赛入门之软件stm32keil+cubemx

hal库可以帮我们一键生成许多基本配置&#xff0c;就不需要自己写了&#xff0c;用多了hal库就会发现原来用基本库的时候都过的什么苦日子&#xff08;笑 下面我们以f103c8t6&#xff0c;也就是经典的最小核心板来演示 一、配置工程 首先来新建一个工程 这里我们配置rcc和sys&…

一篇文章理解前端中的 File 和 Blob

概述&#xff1a; js处理文件、二进制数据和数据转换的时候&#xff0c;提供了一些API和对象&#xff0c;例如&#xff1a;File、Blob、FileReader、ArraryBuffer、Base64、Object URL 和 DataURL。现在主要介绍File和Blob这两个对象。 1.Blob介绍 在js中&#xff0c;Blob&am…

react使用Fullcalendar

前言&#xff1a; 最近在做项目时&#xff0c;遇到了需要用日历的项目。一开始考虑使用antd的日历组件。后来 调研技术库&#xff0c;发现了fullcalendar 库。经过对比 fullcalendar 更强大&#xff0c;更灵活。 其实 antd的日历组件 也不错&#xff0c;简单的需求用他也行。…

SpringBoot应用:精品在线试题库的设计与实现

2 相关技术 2.1 Spring Boot框架简介 Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。通过这种方式&#xff0c;Sprin…