当前位置: 首页 > news >正文

数组中两个字符串的最小距离

链接:数组中两个字符串的最小距离__牛客网
来源:牛客网

 

遍历数组,更新位置与距离
遍历数组中的每个字符串:

  • 若当前字符串是str1,更新prev1为当前位置。若str2已出现过(prev2 != -1),计算两者距离并更新最小距离ret
  • 若当前字符串是str2,更新prev2为当前位置。若str1已出现过(prev1 != -1),计算距离并更新ret

关键点

  • 单次遍历:通过维护两个指针prev1prev2,在遍历过程中动态更新最近位置,确保时间复杂度为O(n)。
  • 实时计算:每次遇到str1str2时,立即计算与另一字符串的当前最近距离,避免遗漏可能的更优解。
  • 边界处理:若任一字符串未出现,直接返回-1,符合题意。
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>

using namespace std;

int main()
{
	int n = 0;
	cin >> n;
	string str1, str2;
	cin >> str1 >> str2;
	vector<string> strs;
	for (int i = 0; i < n; i++)
	{
		string temp;
		cin >> temp;
		strs.push_back(temp);
	}
	int prev1 = -1;
	int prev2 = -1;
	int ret = n;
	for (int i = 0; i < strs.size(); i++)
	{
		if (str1.compare(strs[i]) == 0)
		{
			prev1 = i;
			if (prev1 != -1 && prev2 != -1)
			{
				if (ret > abs(prev2 - prev1))
				{
					ret = abs(prev2 - prev1);
				}
			}
		}
		else if (str2.compare(strs[i]) == 0)
		{
			prev2 = i;
			if (prev1 != -1 && prev2 != -1)
			{
				if (ret > abs(prev2 - prev1))
				{
					ret = abs(prev2 - prev1);
				}
			}
		}
	}
	if (prev1 == -1 || prev2 == -1)
	{
		cout << -1 << endl;
	}
	else
	{
		cout << ret << endl;
	}
	return 0;
}

 

http://www.dtcms.com/a/106547.html

相关文章:

  • 【深度学习量化交易19】行情数据获取方式比测(1)——基于miniQMT的量化交易回测系统开发实记
  • CCF CSP 第34次(2024.06)(2_矩阵重塑(其二)_C++)(二维矩阵 -> 一维矩阵 -> 二维矩阵)
  • 【万字总结】前端全方位性能优化指南(九)——FSP(First Screen Paint)像素级分析、RUM+合成监控、Lighthouse CI
  • 蓝桥杯C++基础算法-最大公约数
  • 论文阅读:基于增强通用深度图像水印的混合篡改定位技术 OmniGuard
  • 电池自动点焊机:智能制造的得力助手|深圳比斯特自动化
  • 普通链式二叉树(习题版)
  • 脑影像分析软件推荐| SimTB
  • WireShark安装
  • BigMusic来了:火山引擎AI音乐模型的技术革新与应用实践
  • MySQL 错误 报错:Table ‘performance_schema.session_variables’ Doesn’t Exist
  • Doris:打破 SQL 方言壁垒,构建统一数据查询生态
  • TensorFlow 字符串操作
  • Uubuntu20.04复现SA-ConvONet步骤
  • 【2025】物联网发展趋势介绍
  • 制造业数字化转型:智能招聘系统破解蓝领用工匹配难题?
  • MySQL学习笔记集--简单介绍以及下载途径
  • EdgeOne Pages 上线「DeepSeek R1 模板」,1分钟快速部署对话型 AI 类网站
  • MySQL表的增删改查(进阶)
  • 应华为 AI 医疗军团之战,各方动态和反应
  • 【C#】.net core 6.0 依赖注入常见问题之一,在构造函数使用的类,都需要注入到容器里,否则会提示如下报错,让DeepSeek找找原因,看看效果
  • 绿盟1面-流量篇
  • GitHub与Gitee各是什么?它们的区别与联系是什么?
  • DeepSeek-R1 API:多场景赋能的智能语言模型
  • 1.4 基于模拟退火改进蛇算法优化VGG13SE网络超参数的故障诊断模型
  • 程序化广告行业(52/89):程序化创意深度剖析
  • Python自定义消费Kafka至HDFS
  • 记录学习的第十九天
  • JAVA学习小计之IO流02--字符流篇
  • TypeScript装饰器与元编程