字节跳动9月22日上午8点笔试题目

四道题时间完全不够呀,只做了两道,ac了第一道,第二道没有全部ac,下来改了下应该没问题了
1.第一道题是统计可以用的厕所个数的问题,
这个思路很简单,判断自己商铺有没有厕所,没有的话给左右两边搜索,左右不为零的话取最小值,否则取最大值(代码中是相加,效果一样)

package exam;
import java.util.Scanner;

public class demo4 {

public static int[]  WcNum(int n,String st){
	char[] ch=st.trim().toCharArray();
	int[] num=new int[n];
	
	for(int i=0;i<n;i++){
		int left=0, right=0,j=i,k=i;
		while(j>=0&&ch[j]=='X'){
			if(j==0) {left=0;break;}
			j--;
			left++;
		}
		while(k<n&&ch[k]=='X'){
			if(k==(n-1)) {right=0;break;}
			k++;
			right++;
		}
		if(left==0||right==0)  num[i]=(right+left);
		else num[i]=Math.min(left, right);
		
	}
	return num;
}
public static void main(String[] args) {
	 Scanner in = new Scanner(System.in);
	 int n=Integer.parseInt(in.nextLine());
	 String st = in.nextLine();
	 int[] num=WcNum(n,st);
	 for(int x:num)
		 System.out.print(x+" ");
}

}
2.第二道是计算最少放弃几道题的问题,
这道题对每个位置前面的数列进行排序,然后累计相加比较即可
package exam;
import java.util.Scanner;

public class demo4 {

public static int[]  WcNum(int n,String st){
	char[] ch=st.trim().toCharArray();
	int[] num=new int[n];
	
	for(int i=0;i<n;i++){
		int left=0, right=0,j=i,k=i;
		while(j>=0&&ch[j]=='X'){
			if(j==0) {left=0;break;}
			j--;
			left++;
		}
		while(k<n&&ch[k]=='X'){
			if(k==(n-1)) {right=0;break;}
			k++;
			right++;
		}
		if(left==0||right==0)  num[i]=(right+left);
		else num[i]=Math.min(left, right);
		
	}
	return num;
}
public static void main(String[] args) {
	 Scanner in = new Scanner(System.in);
	 int n=Integer.parseInt(in.nextLine());
	 String st = in.nextLine();
	 int[] num=WcNum(n,st);
	 for(int x:num)
		 System.out.print(x+" ");
}

}
后面两道题希望有人可以解答
一个是请示领导顺序的问题
还有一个是重复序列的长度个数的问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值