Bulls and Cows

2024-01-04 13:19
文章标签 cows bulls

本文主要是介绍Bulls and Cows,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这道题感觉也真是给自己新知,自己一开始有点蒙,尤其是想就一次循环把两只牛都求出来。一次求其实可以,但确实一上来有难度,这个在平时也就罢了,但在面试时咋办啊。退而求其次,就一点,找到一个能work的方法也行。

下面的做法是参考了一种两次循环的比较好的。

第一次for,求出bull的数量,同时将secret的其它字符连带数量存入map,

第二次for,求出cow的数量,比对guess

这种妥协需要有。另外今后可参考点击打开链接

public class Solution {public String getHint(String secret, String guess) {String result = "";if (secret == null || secret.length() == 0 || guess == null || guess.length() == 0) {return result;}Map<Character/*secretChar*/, Integer/*quantity*/> map = new HashMap<>();int bullCount = 0;for (int i = 0; i < secret.length(); i++) {if (secret.charAt(i) == guess.charAt(i)) {bullCount++;} else {if (map.containsKey(secret.charAt(i))) {map.put(secret.charAt(i), map.get(secret.charAt(i)) + 1);} else {map.put(secret.charAt(i), 1);}}}int cowCount = 0;for (int i = 0; i < secret.length(); i++) {if (secret.charAt(i) != guess.charAt(i)) {if (map.containsKey(guess.charAt(i))) {cowCount++;if (map.get(guess.charAt(i)) == 1) {map.remove(guess.charAt(i));} else {map.put(guess.charAt(i), map.get(guess.charAt(i)) - 1);}}}}return bullCount + "A" + cowCount + "B";}
}


这篇关于Bulls and Cows的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569455

相关文章

usaco 1.2 Milking Cows(类hash表)

第一种思路被卡了时间 到第二种思路的时候就觉得第一种思路太坑爹了 代码又长又臭还超时!! 第一种思路:我不知道为什么最后一组数据会被卡 超时超了0.2s左右 大概想法是 快排加一个遍历 先将开始时间按升序排好 然后开始遍历比较 1 若 下一个开始beg[i] 小于 tem_end 则说明本组数据与上组数据是在连续的一个区间 取max( ed[i],tem_end ) 2 反之 这个

P2858 [USACO06FEB] Treats for the Cows G/S 题解

P2858 题意 给一个数组。每天把最左或者最右的东西卖掉,第 i i i个东西,第 d a y day day天卖出的价格是 a [ i ] ∗ d a y a[i]*day a[i]∗day。 记忆化搜索 void dfs(int l,int r,int day,ll sum){if(v[l][r]>=sum)return;v[l][r]=sum;if(l>r)//这就是dp答案{

2181:Jumping Cows

网址如下: OpenJudge - 2181:Jumping Cows (这是我拿去翻译的版本) 简单来说,题目要求我们求出一个子串,在奇数位的数加,偶数位的数减,求总的最大值 用贪心就可以做了 在波峰的时候加,波谷的时候减 代码如下: #include<cstdio>const int maxP = 150000;int P, val[maxP], ans;int

poj 2186 Popular Cows(tarjan + 强连通分量 + 缩点)

http://poj.org/problem?id=2186 题意:有n头牛,m个膜拜关系,膜拜关系是不可逆的而且是单向传递的,比如A膜拜B,B膜拜C,那么A也膜拜C,但B不一定膜拜A。最后问有多少头牛满足条件:除了它自己,其他所有的牛都膜拜它。 思路: 问题可以抽象为:给定一个有向图,n个顶点,m条有向边,有多少个顶点满足:其他所有的点都能到达该点。 首先假如图G是一个有向树

POJ 2186 Popular Cows (强连通分量)

题目地址:POJ 2186 先用强连通分量缩点,然后形成一棵树。我第一次用的判定条件是入度为分量数-1。虽然这种情况下确实正确。但是在树中也是有间接关系的。这个条件并不是充分必要条件。正确的做法是逆序建树,然后找根结点。而且根结点有且只有一个才可以。所以转化成了找出度为0的分量。 代码如下: #include <iostream>#include <string.h>#include

UVA10491 - Cows and Cars(概率)

UVA10491 - Cows and Cars(概率) 题目链接 题目大意:给你n个门后面藏着牛,m个门后面藏着车,然后再给你k个提示,在你作出选择后告诉你有多少个门后面是有牛的,现在问你作出决定后,根据提示改变你的选择能够成功的概率。 解题思路:简单的概率题,题目意思懂了应该没什么问题。 代码: #include <cstdio>#include <cstring>int

Bulls and Cows问题及解法

问题描述: You are playing the following Bulls and Cows game with your friend: You write down a number and ask your friend to guess what the number is. Each time your friend makes a guess, you provide

POJ-2186 Popular Cows 强连通 + 缩点

http://poj.org/problem?id=2186 我们求强连通分量时,给每个顶点做一个标记,标记该顶点属于哪个强联通分量,然后属于同一个强连通分量的点就可以看作同一个点了。这就是所谓的“缩点”   此题用了个定理 :有向无环图(DAG)中,从任意一个点出发,必定可以到达某一个出度为0的点。   这个不用证明,直观想一下就行了。  因为无环,所以从一个点出发,必

洛谷 P2868 观光奶牛Sightseeing Cows 01分数规划 + 最短路判负环

按照惯例,不想写题目大意,转一个 https://blog.csdn.net/liangzihao1/article/details/79716799 题目描述 Farmer John has decided to reward his cows for their hard work by taking them on a tour of the big city! The cows mu

poj(3186)Treats for the Cows

/*题意:给定n个数每次可以从头或者尾取出数据 于是按取出来得顺序,就可以排成一个数列, 假设这个数列为  a1,a2,a3,a4.......an 现在我们假设按照取出来的顺序有一个权值 w=a1*1+a2*2+a3*3+....an*n 现在需要编程求出,如何控制取数的顺序,让w的值最大   思路: 这个题是动态规划,其实要想到这个动态转移方程就简单了, 可以开一个二维的数组用来存当前的最大