博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LintCode Fizz Buzz 只用一个if语句
阅读量:6902 次
发布时间:2019-06-27

本文共 2271 字,大约阅读时间需要 7 分钟。

9.Fizz Buzz

Given number n. Print number from 1 to n. But:

when number is divided by 3, print "fizz".

when number is divided by 5, print "buzz".
when number is divided by both 3 and 5, print "fizz buzz".
Example

If n = 15, you should return:

[

"1", "2", "fizz",
"4", "buzz", "fizz",
"7", "8", "fizz",
"buzz", "11", "fizz",
"13", "14", "fizz buzz"
]

Challenge

Can you do it with only one if statement?

看了一些答案使用了多个if,这里给出几种方案给大家参考下

1、建立HashMap,将3,6,9,12,5,10,0(i%15==0)所对应的字符串分别映射,这样一个if(map.containsKey(i%15))即可

public static HashMap
map = new HashMap<>(); static{ map.put(3,"fizz"); map.put(6,"fizz"); map.put(9,"fizz"); map.put(12,"fizz"); map.put(5,"buzz"); map.put(10,"buzz"); map.put(0,"fizz buzz"); } public List
fizzBuzz(int n) { List
ret = new ArrayList<>(); for(int i=1;i<=n;i++){ int key = i%15; if(map.containsKey(key)){ ret.add(map.get(key)); }else{ ret.add(""+i); } } return ret; }

2、对1进行优化,只映射3,5,8,这里需要一点数学技巧,大家看代码就理解了

public static HashMap
map = new HashMap<>(); static{ map.put(3,"fizz"); map.put(5,"buzz"); map.put(8,"fizz buzz"); } public List
fizzBuzz(int n) { List
ret = new ArrayList<>(); for(int i=1;i<=n;i++){ int key = f(i,3)+f(i,5); if(map.containsKey(key)){ ret.add(map.get(key)); }else{ ret.add(""+i); } } return ret; } private int f(int i,int k){ return (k-i%k)*((k-i%k)/k); }

3、利用&&的截断功能

public List
fizzBuzz(int n) { List
ret = new ArrayList<>(n); for(int i=1;i<=n;i++){ String str = null; boolean bool1 = i%3==0&&(str="fizz")!=null; boolean bool2 = i%5==0&&(str="buzz")!=null&& i%3==0&&(str="fizz buzz")!=null; if(str==null){ ret.add(""+i); }else { ret.add(str); } } return ret; }

暂时想到这些,欢迎指正

转载地址:http://crpdl.baihongyu.com/

你可能感兴趣的文章
设置界面分析
查看>>
SQL中DateTime转换成Varchar样式
查看>>
java.util.AbstractList
查看>>
几个常见用于解决nginx负载均衡的session共享问题的办法
查看>>
setTimeOut、setInterval与clearInterval函数
查看>>
Appium原理及版本变化细节
查看>>
iphone ios 用xcode4.2开发 访问web service的功能
查看>>
Visual Studio 代码折叠快捷键(摘要)
查看>>
正则【备用】
查看>>
FeatureSelectors
查看>>
数据库防火墙DBShield安装
查看>>
sudo with no password
查看>>
Windows 局域网ping获取设备IP
查看>>
使用蓝图来扩展编辑器
查看>>
USACO题目——Transformations
查看>>
除了 UCAN 发布的鹿班和普惠体,这些设计工具也来自阿里
查看>>
转载----Python正则表达式指南
查看>>
.Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
查看>>
HDU 1394 Minimum Inversion Number 线段树
查看>>
Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)
查看>>