2017.9.19百度笔试-合作邻居

结束后才做出来了,可惜了
import java.util.Scanner;
/**

  • 百度笔试
  • 吉姆要取消聚会,通知邻居,邻居中有些合作的,有些不合作的;
  • 合作的可以通知比人,不合作的不会通知别人;
  • 吉姆打电话通知邻居,只能通知一位,则邻居中最好的情况是什么样子
  • 输入字符串,c代表合作的邻居,可以通知两边的个两位;n代表不合作,不会通知其他邻居
  • 输出最好情况,被通知的用I表示,未收到通知的用户U表示
  • 样例1:输入nncncnnn,输出IIIIIIIU
  • 样例2:输入ncncncnnncnccncnnn,输出UUUUUUUIIIIIIIIIIU
  • @author Aya
    /

public class BaiDuTest01 {

public static void main(String[] args) {
    Scanner in=new Scanner(System.in);
    String string=in.nextLine();
    int len=string.length();

    //建立数组记录合作邻居c的位置
    int[] iPos=new int[len];
    int j=0;
    for (int i = 0; i < len; i++) {
        if (string.charAt(i)=='c') {
            iPos[j++]=i;
        }
    }
    int maxLen=0;
    int start=iPos[0];
    int end=iPos[0];
    //找出合作邻居能相互通知且距离最远的两个点
    for (int i = 1; i < iPos.length; i++) {
        if (iPos[i]==0) {
            break;
        }
        if (iPos[i]-iPos[i-1]<=2) {
            end=iPos[i];
            continue;
        }else {
            if (end-start>maxLen) {
                maxLen=end-start;
                start=iPos[i];
            }
        }
    }

    String reString=replaceString(string,start,end);

    System.out.println(reString);

}

private static String replaceString(String string, int start, int end) {
    String re="";
    int i=0;
    for (;i  < start-2; i++) {
        re+="U";
    }
    for (;(i<= end+2)&&(i<string.length()); i++) {
        re+="I";
    }
    for (;i  < string.length(); i++) {
        re+="U";
    }
    return re;
}

}

#百度#
全部评论

相关推荐

M_bao:换个排版吧哥们,看着费劲
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务