`

毁三观算法1 数组中的连续且相同起始结束 2 数组参考中连续且相同

 
阅读更多
/**
 * 找出横向是连续(2个以上)纵向是相同的起始和结束位置
 * 起始和结束位置有N个
 * 这是一个颠覆三观的算法。首尾填充最后中间填充
 * 注意第一个和最后一个是加的前缀和后缀    
 * 由于是有顺序的,每2个是一对啊 
 * @author 
 *
 */
public class Points {
	public static void main(String[] args) {
		String specialStart = "@@@@start@@@@";
		String specialEnd = "@@@@end@@@@";
		String specialMiddle = "@@@@middle@@@@";
		String[] a = { specialStart, "ab", "a", "ba", "b", "a", "a", "a", "a", "a", "b", "b", "b", "b", "c", "c", "c", "c", "a","bc", "bc", "b",  specialEnd};
		String[] b = { specialStart, "c", "bc", "a", "aa", "a", "a", "c", "a", "a", "b", "b", "b", "c", "c", "e", "c", "c", "c","bc", "bc", "cbc",specialEnd};
		// 求单个数组的
		print(a);
		System.out.println("===============================a end");
		print(b);
		System.out.println("===============================b end");
		// 求b中连续的(2个以上) 且与a位置的值相同的起始结束位置
		String[] c = new String[a.length];
		for (int i = 0; i < c.length; i++) {
			c[i]=a[i]+specialMiddle+b[i];
		}
		print(c);
		System.out.println("===============================a,b互相参考end");
	}
	public static void print(String[] data) {
		for (int i = 0; i < data.length; i++) {
			if (i > 0 && i < data.length - 1) {
				boolean pre = data[i].equals(data[i - 1]);
				boolean next = data[i].equals(data[i + 1]);
				if (!pre && next) {
					System.out.println("开始位置" + i);// 
				}
				if (pre && !next) {
					System.out.println("结束位置" + i);
				}
			}
		}
	}
}

 

分享到:
评论

相关推荐

    C# 如何判断一个Byte数组中是否存在某些连续的数据).txt

    ### C# 中如何判断一个 Byte 数组中是否存在某些连续的数据 在C#中,要判断一个Byte数组中是否存在某些连续的数据,可以通过编写自定义的方法来实现。以下将详细解析题目中给出的代码示例,并进一步扩展相关的知识...

    数据结构 KMP算法及next数组求解过程

    3. 在这个过程中,我们需要用到已计算好的next[i-1],并检查模式串的子串'i-n'到'i-1'是否与'i-1-n'到'i-2'相同,若相同则更新next[i]。 在实际编程实现中,这个过程可以通过两个指针j和i来完成,j初始为0,i初始为...

    用递归算法编写求一个数组A中的最大元素

    ### 递归算法在求解数组最大值中的应用 #### 一、递归算法简介 递归算法是一种通过调用自身来解决问题的方法。它通常包括两个部分:基本情况(base case)与递归情况(recursive case)。对于求解数组中的最大值...

    python算法-数组和链表 数组和链表.pdf

    它的元素在内存中的地址是连续相邻的,可以通过下标迅速访问数组中任何元素。但是,如果要在数组中增加或删除元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加或删除的元素放在其中。 链表恰好...

    数组倒置经典算法

    - **两指针法**:设置两个指针,一个指向数组起始位置,另一个指向末尾位置,然后交换这两个位置上的元素,并逐步向数组中心移动,直到两个指针相遇或交错。 - **循环法**:创建一个新的数组,按照逆序的方式将原...

    最短无序连续子数组1

    题目 "最短无序连续子数组1" 是一道关于数组处理的问题,主要考察的是寻找数组中需要升序排序的最短连续子数组,以便整个数组变得有序。这是一道典型的算法题,通常出现在编程竞赛如 LeetCode 等平台。 在解决这个...

    c语言实现分治算法求解最大子数组

    自己写的分治算法,也包括了暴力求解的部分,并比较两者的运行时间,输出最大子数组的起始位置

    已排序数组三分搜索法的研究

    根据给定的文件信息,显然这里的信息与标题和描述中提到的“已排序数组三分搜索法的研究”不相符。然而,既然题目要求我们基于提供的标题和描述生成相关的知识点,我们将聚焦于“三分搜索法”,也被称为三等分查找或...

    数据结构(JAVA) 将含有n个整数元素的数组a0..n-1循环右移m位,要求算法的空间复杂度为O(1)

    在这个问题中,我们需要确保算法的空间复杂度为O(1),这意味着我们不能使用额外的大规模存储空间,只能在原数组上进行操作。 首先,我们要理解循环右移的概念。假设有一个数组`a[0..n-1]`,循环右移m位意味着数组的...

    KMP-fail.rar_kmp fail_kmp的fail_kmp算法fail数组_kmp算法求fail

    例如,如果模式串为"ABABC",那么fail数组将是[0, 0, 1, 2, 0],表示在匹配过程中,如果遇到不匹配,可以根据fail值快速找到新的起始匹配位置。 fail数组的计算通常采用以下步骤: 1. 初始化:将fail[0]设为0,因为...

    分治法旋转数组

    1. **时间复杂度分析**:该算法的时间复杂度主要由递归调用次数决定,每个层次的填充操作需要`O(n)`时间,总共有`n/2`个层次,因此总体时间复杂度为`O(n^2)`。 2. **空间复杂度分析**:由于创建了一个`n*n`的二维...

    C#实现将数组内元素打乱顺序的方法

    在C#编程中,有时我们需要对数组中的元素进行随机排序,比如在实现洗牌算法或者创建随机测试数据时。本文将详细介绍如何使用C#实现数组元素的打乱顺序功能,涉及到了C#数组的遍历以及随机数的操作。 首先,我们创建...

    算法合集之《后缀数组——处理字符串的有力工具》

    后缀数组SA则是一个整数数组,长度同样为n,其中SA[i]表示第i个最小的后缀在原字符串中的起始位置。例如,对于字符串“banana”,其后缀数组为[6, 5, 3, 1, 2, 4],分别对应后缀“a”, “na”, “ana”, “banana”,...

    Java实现将数组的子数组a[0:k]和a[k+1:n-1]进行换位的算法

    在编程领域,数组操作是基础且重要的组成部分,尤其是在算法设计中。本问题涉及的是一个特定的数组操作,即“换位”操作,它要求将数组的前k个元素与剩余的n-k个元素进行交换,而这个过程需要在最坏情况下达到线性...

    后缀数组创建算法的实现

    ### 后缀数组创建算法的实现 #### 一、引言 后缀数组作为一种新兴的全文索引构建方法,近年来在多个领域得到了广泛的应用。它不仅适用于传统的文本搜索,还在基因组分析、文本压缩和字符检索等领域展现出了巨大的...

    Python实现查找数组中任意第k大的数字算法示例

    在Python编程中,查找数组中第k大的数字是一项常见的任务,尤其在数据分析和算法竞赛中。这个任务通常涉及到数组操作,排序以及高效的查找技术。在给定的示例中,介绍了一个利用分治思想实现的算法,类似于快速排序...

    求数组的逆序数

    递归函数可以接收三个参数:数组指针、起始索引和结束索引。在合并阶段,我们需要比较两个子数组的元素,如果左边的元素大于右边的,就增加逆序数,并将该元素放入结果数组。 C++代码实现可能如下: ```cpp int ...

    C++数组之中的最大值最小值应用

    在C++编程语言中,数组是一种非常基础且重要的数据结构,用于存储同类型的数据集合。在处理数组时,经常会遇到需要查找数组中的最大值和最小值的问题。这在数据分析、算法设计以及各种数学计算中都是常见的操作。本...

    JavaScript使用二分查找算法在数组中查找数据的方法

    二分查找算法是一种高效的查找算法,适用于在有序数组中快速定位特定元素。二分查找也被称为折半查找,它的核心思想是每次将查找区间减半,逐步缩小查找范围,从而迅速找到目标值或者确定其不存在。 在JavaScript中...

    Merge(合并两个已排好序的数组)

    标题中的“Merge(合并两个已排好序的数组)”是一个经典的计算机科学问题,涉及到数据结构和算法的知识。在处理这个问题时,我们通常会用到数组和排序的基本概念。以下是关于这个主题的详细解释: **一、数组** 数组...

Global site tag (gtag.js) - Google Analytics