首页 > 编程语言 >Java解决最长相邻不相等子序列I

Java解决最长相邻不相等子序列I

时间:2024-03-24 23:01:13浏览次数:21  
标签:groups 可行 Java words rs 相邻 数组 序列

Java解决最长相邻不相等子序列I

01 题目

  • 给你一个下标从 0 开始的字符串数组 words ,和一个下标从 0 开始的 二进制 数组 groups ,两个数组长度都是 n

    你需要从 words 中选出 最长

    子序列

    。如果对于序列中的任何两个连续串,二进制数组 groups 中它们的对应元素不同,则 words 的子序列是不同的。

    正式来说,你需要从下标 [0, 1, ..., n - 1] 中选出一个 最长子序列 ,将这个子序列记作长度为 k[i0, i1, ..., ik - 1] ,对于所有满足 0 <= j < k - 1j 都有 groups[ij] != groups[ij + 1]

    请你返回一个字符串数组,它是下标子序列 依次 对应 words 数组中的字符串连接形成的字符串数组。如果有多个答案,返回 任意 一个。

    注意:words 中的元素是不同的 。

    示例 1:

    输入:words = ["e","a","b"], groups = [0,0,1]
    输出:["e","b"]
    解释:一个可行的子序列是 [0,2] ,因为 groups[0] != groups[2] 。
    所以一个可行的答案是 [words[0],words[2]] = ["e","b"] 。
    另一个可行的子序列是 [1,2] ,因为 groups[1] != groups[2] 。
    得到答案为 [words[1],words[2]] = ["a","b"] 。
    这也是一个可行的答案。
    符合题意的最长子序列的长度为 2 。
    

    示例 2:

    输入:words = ["a","b","c","d"], groups = [1,0,1,1]
    输出:["a","b","c"]
    解释:一个可行的子序列为 [0,1,2] 因为 groups[0] != groups[1] 且 groups[1] != groups[2] 。
    所以一个可行的答案是 [words[0],words[1],words[2]] = ["a","b","c"] 。
    另一个可行的子序列为 [0,1,3] 因为 groups[0] != groups[1] 且 groups[1] != groups[3] 。
    得到答案为 [words[0],words[1],words[3]] = ["a","b","d"] 。
    这也是一个可行的答案。
    符合题意的最长子序列的长度为 3 。
    

    提示:

    • 1 <= n == words.length == groups.length <= 100
    • 1 <= words[i].length <= 10
    • groups[i]01
    • words 中的字符串 互不相同
    • words[i] 只包含小写英文字母。

02 知识点

  • 动态规划
  • 循环

03 我的题解思路

public class getLongestSubsequence {
	public static List<String> getLongestSubsequence(String[] words, int[] groups) {
		List<String> rs=new ArrayList<>();//返回值
		int n=groups.length;
		if(n==1) {//判断特殊情况,如果数组长度为一直接返回
			rs.add(words[0]);
			return rs;
		}
		for (int i = 0; i < groups.length-1; i++) {
//			循环整个数组,如果前一个值与后一个值不同,则把对应字符加入返回值
			if(groups[i]!=groups[i+1]) {
				rs.add(words[i]);
			}
//			最后一个字符直接加入
			if(i==groups.length-2) {
				rs.add(words[i+1]);
			}
		}
		
		
		return rs;
    }
}

标签:groups,可行,Java,words,rs,相邻,数组,序列
From: https://blog.csdn.net/2302_77182979/article/details/136849116

相关文章

  • Java基础语法
    集成开发环境(IDE,IntegratedDevelopmentEnvironment)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具,集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或软件套(组)都可以叫集成开发......
  • Java方法(下)
    Java方法(下)方法的重载重载就是在一个类中,有相同的函数名称,但形参不同的函数方法的重载的规则​1.方法的名称必须相同***2.参数列表必须不同(个数不同或类型不同或者参数排列顺序不同等)*** ​3.方法的返回类型可以相同也可以不同​4.仅仅返回类型不同不足以成为......
  • 学习java时候的笔记(一)
    输出语句System.out.println("abc");//先打印abc,再进行换行System.out.print("abc");//只打印abc,不换行System.out.println();//不打印任何数据,只做换行处理。变量变量的定义格式数据类型变量名=数据值;demopublicclassVariableDemo1{ //主入口 publi......
  • java:显示当前时间小程序
    publicclassCurrentTime{publicstaticvoidmain(String[]args){longt=System.currentTimeMillis();//求出的是毫秒longseconds=t/1000;//换算成秒longs=seconds%60;//求余数,是实际的秒数longminute=seconds/60;//求的是......
  • JavaScript 排序算法
    在这篇文章中,我将介绍几种常见的JavaScript排序算法,并对它们的原理和实现进行详细说明。排序算法是计算机科学中非常重要的基础知识之一,它们可以帮助我们对数据进行有效的整理和排序,提高程序的效率和性能。冒泡排序(BubbleSort)冒泡排序是最简单的排序算法之一,它通过不......
  • 类和对象.java
    1,类类(设计图):是对象共同特征的描述对象:是真实存在的具体事物在Java中,必须先设计类,才能有对象定义格式:class类名{成员变量;成员方法;}classgirl{//属性(成员变量)publicStringname;publicintage;publicStringgender;//行为publicvoi......
  • 【JavaWeb】Day19.Vue组件库Element——常见组件
    一.Element常见组件-表格Table表格:用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。首先打开官网找到表格(Element-Theworld'smostpopularVueUIframework)以带边框表格为例,点击显示代码把代码复制到自己的vue项目中点击npm脚本运行,......
  • 【JavaWeb】Day18.Vue组件库Element
    什么是ElementElement:是饿了么团队研发的,一套为开发者、设计师和产品经理准备的基于Vue2.0的桌面端组件库。组件:组成网页的部件,例如超链接、按钮、图片、表格、表单、分页条等等。官网:Element-Theworld'smostpopularVueUIframeworkElement快速入门安装ElementUI......
  • Java语言程序设计实验题目:编写Java程序统计一篇英文文档中各单词出现的次数,并按单词出
    题目描述编写Java程序统计一篇英文文档中各单词出现的次数,并按单词出现的频率由高到低进行输出。例如:文档“HellowordHello”的统计结果为: Hello:2次 word:1次思路分析1.处理文档:先用nextLine()将文段输入,存储在字符串file,再调用split()方法将字符串分割成一个......
  • leetcode106从中序与后序遍历序列构造二叉树
    目录1.解题关键2.思路3.变量名缩写与英文单词对应关系4.算法思路图解5.代码本文针对原链接题解的比较晦涩的地方重新进行说明解释原题解链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/solutions/50561/tu-jie-gou-z......