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;
}
}
#百度#
