299. 猜数字游戏

你正在和你的朋友玩 猜数字(Bulls and Cows)游戏:你写下一个数字让你的朋友猜。每次他猜测后,你给他一个提示,告诉他有多少位数字和确切位置都猜对了(称为“Bulls”, 公牛),有多少位数字猜对了但是位置不对(称为“Cows”, 奶牛)。你的朋友将会根据提示继续猜,直到猜出秘密数字。

请写出一个根据秘密数字和朋友的猜测数返回提示的函数,用 A 表示公牛,用 B 表示奶牛。

请注意秘密数字和朋友的猜测数都可能含有重复数字。

示例 1:

输入: secret = “1807”, guess = “7810”

输出: “1A3B”

解释: 1 公牛和 3 奶牛。公牛是 8,奶牛是 0, 1 和 7。

示例 2:

输入: secret = “1123”, guess = “0111”

输出: “1A1B”

解释: 朋友猜测数中的第一个 1 是公牛,第二个或第三个 1 可被视为奶牛。

说明: 你可以假设秘密数字和朋友的猜测数都只包含数字,并且它们的长度永远相等。

class Solution {
public String getHint(String secret, String guess) {
if (secret.length() == 0 || guess.length() == 0) {
return "";
}
int i = 0, cnt = 0;//公牛
char[] s = secret.toCharArray();
char[] g = guess.toCharArray();
int[] sn = new int[10];
int[] gn = new int[10];
while(i < s.length && i < g.length) {
if (s[i] == g[i]) {
cnt++;
} else {
sn[s[i] - '0']++;
gn[g[i] - '0']++;
}
i++;
}
i = 0;
int cnt2 = 0;
while(i < sn.length) {
cnt2 += Math.min(sn[i], gn[i]);
i++;
}
StringBuilder sb = new StringBuilder();
sb.append(cnt).append('A').append(cnt2).append('B');
return sb.toString();
}
}

最新文章

  1. Centos7的firewalld配置
  2. BZOJ3295 [Cqoi2011]动态逆序对
  3. Asp.net项目因Session阻塞导致页面打开速度变慢
  4. oracle 日志文件管理
  5. Tk::Table
  6. JavaSE_ API常用对象 总目录(11~14)
  7. Unity 总裁 John Riccitiello 发话:VR足以匹敌互联网
  8. grep与正则表达式
  9. webservice Dome--一个webservice的简单小实例
  10. phpstorm及webstorm密钥
  11. Lintcode155-Minimum Depth of Binary Tree-Easy
  12. php中出现乱码
  13. (字符串 枚举)The Hardest Problem Ever hdu1048
  14. Uiautomator - 6.0 以上权限受限问题
  15. PHP会话(Session)实现用户登陆功能 转自#落人间#
  16. Python序列解包
  17. js数据结构之链表(单链表、双向链表、循环链表)
  18. rabbitmq 二进制安装
  19. CSS3 -- 动画库
  20. MySQL数据库----数据操作

热门文章

  1. STM32 TIM1高级定时器RCR重复计数器的理解
  2. 关于日常操作中sql的性能
  3. zookeeper和Eureka的区别
  4. 基于VUE实现的h5网页Web出库单入库单打印设计
  5. k8s安装部署成功
  6. linux常用命令---PATH与防火墙
  7. element-ui的el-table和el-form嵌套使用表单校验
  8. Getting Started With Node and NPM
  9. 用jquery写一个上拉加载
  10. 多线程(thread+queue 售票)