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