程序员面试金典——珠玑妙算

题目描述

我们现在有四个槽,每个槽放一个球,颜色可能是红色(R)、黄色(Y)、绿色(G)或蓝色(B)。例如,可能的情况为RGGB(槽1为红色,槽2、3为绿色,槽4为蓝色),作为玩家,你需要试图猜出颜色的组合。比如,你可能猜YRGB。要是你猜对了某个槽的颜色,则算一次“猜中”。要是只是猜对了颜色但槽位猜错了,则算一次“伪猜中”。注意,“猜中”不能算入“伪猜中”。

给定两个string Aguess。分别表示颜色组合,和一个猜测。请返回一个int数组,第一个元素为猜中的次数,第二个元素为伪猜中的次数。

测试样例:
"RGBY","GGRR"

返回:[1,1]

思路:用falsity表示猜中颜色槽位猜错,reality表示两个都猜对。

遍历一遍,直接求得reality的结果,然后算出A与guess里面每种颜色的个数,

falsity为各个颜色猜中的结果之和,并且要减去reality(因为包含了正确的情况)

import java.util.*;

public class Result {
    public int[] calcResult(String A, String guess) {
        // write code here
        	int falsity = 0;
		int reality = 0;
		int aR=0,aY=0,aG=0,aB=0,gR=0,gY=0,gG=0,gB=0;
		
		for(int i =0;i<A.length();i++){
			char a=A.charAt(i);
			char g=guess.charAt(i);
			if(a==g)reality++;
			if(a=='R'){
				aR++;
			}else if (a=='Y') {
				aY++;
			}else if (a=='G') {
				aG++;
			}else {
				aB++;
			}
			if(g=='R'){
				gR++;
			}else if (g=='Y') {
				gY++;
			}else if (g=='G') {
				gG++;
			}else {
				gB++;
			}
		}//for
		if(aB>gB){
			falsity+=gB;
		}else{
			falsity+=aB;
		}
		if(aR>gR){
			falsity+=gR;
		}else{
			falsity+=aR;
		}
		if(aY>gY){
			falsity+=gY;
		}else{
			falsity+=aY;
		}
		if(aG>gG){
			falsity+=gG;
		}else{
			falsity+=aG;
		}
		falsity-=reality;
		int array[]=new int[2];
		array[0]=reality;
		array[1]=falsity;
		return array;
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值