首页 > 编程语言 >算法题1

算法题1

时间:2024-12-12 13:11:47浏览次数:5  
标签:子串 Run string str2 str1 算法 Console

题目

编写一个方法,求两个字符串的最长公共子串(Longest Common Substring)的长度。
输入:
• 两个字符串 str1 和 str2。
输出:
• 它们的最长公共子串的长度(即最大连续相同子串的长度)。

测试用例

输入字符串1 输入字符串2 期望输出 说明
"abcdef" "zcdemf" 3 最长公共子串为"cde"
"12345" "34567" 3 最长公共子串为"345"
"aaaa" "aaa" 3 最长公共子串为"aaa"
"" "abc" 0 空字符串无公共子串
"abc" "" 0 空字符串

代码

public class Program
{
	static void Main(string[] args)
	{
		Console.WriteLine("Hello, World!");

		Run("abcdef", "zcdemf");
		Run("12345", "34567");
		Run("aaaa", "aaa");
		Run("", "abc");
		Run("abc", "");

		Console.ReadKey();
	}


	public static void Run(string str1, string str2)
	{

		if (string.IsNullOrEmpty(str1)  || string.IsNullOrEmpty(str2))
		{
			Console.WriteLine("无公共子串");
			return;
		}

		string targartRtr = string.Empty;
		string shorttStr = str1.Length > str2.Length ? str2 : str1;
		string longstr = shorttStr.Equals(str1) ? str2 : str1;

		for (int subIndex =shorttStr.Length;subIndex > 0;subIndex--)
		{
			for (int i = 0; (i+subIndex) <=shorttStr.Length;i++)
			{
				string substr = shorttStr.Substring(i, subIndex);
				if (longstr.IndexOf(substr) >= 0)
				{
					targartRtr = substr;
					Console.WriteLine(targartRtr);
				}
			}
			if (!string.IsNullOrEmpty(targartRtr)) //找出满足条件的跳出循环
			{
				break;
			}
		}
		
		//Console.ReadKey();
		
	}

}

标签:子串,Run,string,str2,str1,算法,Console
From: https://www.cnblogs.com/chenshibao/p/18602207

相关文章

  • A*算法(matlab)求解题目
    代码(Astar.m文件)%A*算法主函数,用于求从起点到目标节点的最短路径function[path,cost]=AStar(w,startIndex,goalIndex)%w为邻接矩阵,表示图中节点间的连接关系和距离%startIndex为起点节点的索引%goalIndex为目标节点的索引%定义节点结构体,用于存储节点的相关信息......
  • 转载:【AI系统】Winograd 算法
    在上一篇文章的介绍中,介绍了Im2Col技术,它通过将三维张量重新排列成矩阵形式,然后利用基于内存访问局部性的优化库如GEMM(通用矩阵乘法库)加速计算。随后,还探讨了空间组合优化,这一种利用局部性原理来提升效率的技术。在本文将重点介绍Winograd优化算法,它是矩阵乘优化方法中Copp......
  • 转载:【AI系统】Im2Col 算法
    作为早期的AI框架,Caffe中卷积的实现采用的是基于Im2Col的方法,至今仍是卷积重要的优化方法之一。从上一篇文章的介绍中可以看到,在CNN中卷积直接计算的定义中,卷积核在输入图片上滑动,对应位置的元素相乘后相加求和,滑窗的大小由卷积核决定。由于滑动操作时的窗口的数据横向是......
  • 转载:【AI系统】Winograd 算法
    在上一篇文章的介绍中,介绍了Im2Col技术,它通过将三维张量重新排列成矩阵形式,然后利用基于内存访问局部性的优化库如GEMM(通用矩阵乘法库)加速计算。随后,还探讨了空间组合优化,这一种利用局部性原理来提升效率的技术。在本文将重点介绍Winograd优化算法,它是矩阵乘优化方法中Copp......
  • 转载:【AI系统】Im2Col 算法
    作为早期的AI框架,Caffe中卷积的实现采用的是基于Im2Col的方法,至今仍是卷积重要的优化方法之一。从上一篇文章的介绍中可以看到,在CNN中卷积直接计算的定义中,卷积核在输入图片上滑动,对应位置的元素相乘后相加求和,滑窗的大小由卷积核决定。由于滑动操作时的窗口的数据横向是......
  • 使用js按贝格尔编排算法生成单循环对阵表
    functionbergerAlgorithm(teams){if(!Array.isArray(teams)){thrownewError("Teamsmustbeanarray.");}constnumTeams=teams.length;if(numTeams<2){return[];//Nomatchespossiblewithlessthan2teams}/......
  • 基于遗传算法的梯级水电站群优化调度研究(Python代码实现)
     ......
  • 基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
    1.程序功能描述基于HMM隐马尔可夫模型的金融数据预测算法.程序实现HMM模型的训练,使用训练后的模型进行预测。2.测试软件版本以及运行结果展示MATLAB2022A版本运行 3.核心程序%初始化预测值矩阵yuce和误差矩阵erryuce=zeros(size(data,1),lens);err=zero......
  • 数据结构与算法之美:再谈单链表(进阶)
            Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!我的博客:<但凡.我的专栏:《数据结构与算法之美》、《编程之路》、《题海拾贝》欢迎点赞,关注! 目录 1、使用C++实现单链表1.1节点的声明1.2节点的初始化1.3头插和尾插1.3.1头插......
  • [C#] 24位图像水平翻转的跨平台SIMD硬件加速向量算法的关键——YShuffleX3Kernel源码
    在上一篇文章里,给大家讲解了24位图像水平翻转(FlipX)算法,其中用到了一个关键方法——YShuffleX3Kernel。一些读者对它背后的原理感兴趣——为什么它在跨平台时运行也能获得SIMD硬件加速,各种向量指令集的情况下具体怎样实现的?于是本文便详细解答一下。一、为什么它在跨平台时运行......