阿里测试题

来源:互联网 发布:js utf 8编码转换器 编辑:程序博客网 时间:2024/06/05 08:42

森林举行运动会,小伙伴们身上每个都印着一个字符标记,排成一列,委员会要挑出每列里相邻小伙伴身上没有重复字符标记的,最多能挑出几个?
比如:小伙伴们的字符标记串起来是“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));        }}
原创粉丝点击