阿里测试题

森林举行运动会,小伙伴们身上每个都印着一个字符标记,排成一列,委员会要挑出每列里相邻小伙伴身上没有重复字符标记的,最多能挑出几个?
比如:小伙伴们的字符标记串起来是“ccccccbc” 那相邻的小伙伴身上没有重复的字符标记是cb或者bc,那这个人数就是2。

import java.util.*;

public class Main {

/**
 *  请完成下面这个函数,实现题目要求的功能 **/
 /** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^  **/
    static int lengthOfLongestSubstring(String s) {
        String[] s1=new String[s.length()-1]; 
        int i=0,j,length=0;
        boolean repeat=false;
        boolean[] b=new boolean[s.length()-1];
        char[] cs=s.toCharArray();
        //可以用s1[0]=""+cs[0]+cs[1];代替,下同
        s1[0]=String.valueOf(cs[0])+String.valueOf(cs[1]);
        b[0]=true;
        for(j=1;j<cs.length-1;j++){
            repeat=false;
            for(int k=0;k<=i;k++){
                if((String.valueOf(cs[j])+String.valueOf(cs[j+1])).equals(s1[k])){
                    repeat=true;
                    b[k]=false;
                    break;
                }
            }   
            if(!repeat){
                s1[++i]=String.valueOf(cs[j])+String.valueOf(cs[j+1]);
                b[i]=true;
            }
        }
        for(i=0;s1[i]!=null;i++){
            if(b[i]){
                length++;
            }
        }
        return length;
    }

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int res;

        String _s;
        try {
            _s = in.nextLine();
        } catch (Exception e) {
            _s = null;
        }

        res = lengthOfLongestSubstring(_s);
        System.out.println(String.valueOf(res));    

    }
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值