最后一天了(再见了)

该文章包含两个Java程序,第一个程序解决的是找到给定字符串中最长的平衡子串问题,例如在字符串1000111中,最长平衡子串是101。第二个程序将一维数组转换为行数尽可能小的二维数组,例如输入[1,1,3,3,4,2],输出为[[1,1],[3,3],[4],[2]]。

我测你们码,这么快就最后一天了,虽然昨天星期六去浪了,属实是放纵了一天

1.最长平衡子串

package zfc;

/*
 * 最长平衡子串
 * 1000111 :6
 * 101001
 */
import java.util.*;
public class phzc {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        char c [] = str.toCharArray();
        int num =0;int num1=0;
        int ans =0;
        for(int i=0;i<c.length;i++) {
            if(str.charAt(i) == '0') {
                num++;
                if(num>0) {
                    num1=0;
                    num=1;
            }else {
                num++;
            }
        }else {
                num1++;
                ans = Math.max(num, num1);
            }
        }
        System.out.println(ans * 2);


    }
}

2.转换为二维数组

/*
 * 将一维数组中的元素,转换为行数尽可能小的二维数组
 * nums = [1113342]
 * 1342
 * 13
 * 1
 */

import java.util.*;

public class leetc {
    public static List<List<Integer>> findMatrix(int[] nums) {
        List<List<Integer>> list=new ArrayList<>();
        
        
        
        for (int i = 0; i < nums.length; i++) {
            boolean flag=true;
            
            //创建一个表
            if (list.size()<1) {
                list.add(new ArrayList<>());
            }
            
            //遍历子表
            for(List<Integer> list3:list) {
                flag=true;
            
                //判断子表和数组有无相同元素
                for (int j = 0; j < list3.size(); j++) {
                    if (list3.get(j)==nums[i]) {
                        flag=false;
                        break;
                    }
                }
                
                //第一次出现的所有的不同元素则放到第一行
                if (flag) {
                    list3.add(nums[i]);
                    break;
                }
            }
            
            //第二次出现相同的元素就会放置到第二行,第几次出现相同的元素放到第几行
            if (!flag) {
                List<Integer> list2=new ArrayList<>();
                list2.add(nums[i]);
                list.add(new ArrayList<>(list2));
            }
            
        }
        
        return list;
    }
    
public static void main(String[] args) {
    Scanner  sc = new Scanner(System.in);
    int n = sc.nextInt();
    int nums[]=new int[n];

    System.out.println(findMatrix(nums));
    
    }
    
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

螺上螺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值