美团点评2019秋招笔试真题-------------最长全1串(Java)

题目描述

给你个01字符串,定义答案=该串中最长的连续1的长度,现在你有至多K次机会,每次机会可以将串中的某个0改成1,现在问最大的可能的答案。

输入描述:

输入第一行两个整数N,K,表示字符串长度和机会次数

第二行输入N个整数,表示该字符串的元素

输出描述:

输出一行表示答案

输入样例:

10 2

1 0 0 1 0 1 0 1 0 1

输出样例:

5

package Test;

import java.util.Scanner;

public class test {
	public static void main(String[] args) {
		Scanner s=new Scanner(System.in);
		int N =s.nextInt();
		int a[] =new int [N];
		String a1 []=new String [10*N];
		int K =s.nextInt();
		for(int i=0;i0;j--) {
				if(i

        先获取用户输入的内容,为了方便后序操作,先将数组转换成字符串,接下来对字符串进行截取,将截取的字符串储存到a1数组中,然后对数组a1进行排序,长度长的放到最前面,find函数对数组进行遍历,并且判断是否满足条件。因为字符串是按字符串长度从长到短排序的,所以第一个满足条件的字符串就是所求字符串。这就是我对这道题的理解,若发现有任何问题请私聊,不喜勿喷!

       也可以对每一个截取的字符串进行find操作,对每一个符合要求的字符串的长度进行存储,最后输出最大长度,也是可以的!!

 

你可能感兴趣的:(算法题,java编程)