题目描述
LC 题 - 412
给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:
answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。
answer[i] == "Fizz" 如果 i 是 3 的倍数。
answer[i] == "Buzz" 如果 i 是 5 的倍数。
answer[i] == i (以字符串形式)如果上述条件全不满足。
题解
思路:模拟+字符串拼接
对于每个1<=i<=n可以使用字符串拼接的方式得到answer[i],具体操作如下:
如果i是3的倍数,则将“Fizz”拼接到answer[i]
如果i是5的倍数, 则将“Buzz”拼接到answer[i]
如果answer[i]为空,则i既不是3 的倍数也不是5 的倍数,将i 拼接到answer[i]
// OC
+ (NSArray *)fizzBuzz1:(int)n {
NSMutableArray *answer = [[NSMutableArray alloc] init];
for (int i=1; i<n+1; i++) {
NSMutableString *temStr = [[NSMutableString alloc] init];
if (i%3 == 0) {
[temStr appendString:@"Fizz"];
}
if (i%5==0){
[temStr appendString:@"Buzz"];
}
if (temStr.length == 0) {
[temStr appendFormat:@"%d",i];
}
[answer addObject:temStr];
}
return answer;
}
// Swift
static public func fizzBuzz1(_ n:Int) -> [String] {
var list:[String] = [String]()
for i in 1..<(n+1) {
var tempStr:String = ""
if i%3 == 0 {tempStr.append("Fizz")}
if i%5 == 0 {tempStr.append("Buzz")}
if tempStr.count == 0 {tempStr.append(String(i))}
list.append(tempStr)
}
return list
}
思路:模拟2
对于每个1<=i<=n可以使用字符串拼接的方式得到answer[i],具体操作如下:
如果i是15的倍数,则answer[i]为“FizzBuzz”
如果i是3的倍数,则answer[i]为“Fizz”
如果i是5的倍数, 则answer[i]为“Buzz”
其他,则answer[i]为I
// OC
+ (NSArray *)fizzBuzz2:(int)n {
NSMutableArray *answer = [[NSMutableArray alloc] init];
for (int i=1; i<n+1; i++) {
NSString *temStr = @"";
if (i%15 == 0) {
temStr = @"FizzBuzz";
}else if (i%3==0){
temStr = @"Fizz";
}else if (i%5==0){
temStr = @"Buzz";
}else{
temStr = [NSString stringWithFormat:@"%d",i];
}
[answer addObject:temStr];
}
return answer;
}
// Swift
static public func fizzBuzz2(_ n:Int) -> [String] {
var list:[String] = [String]()
for i in 1..<(n+1) {
if i%15 == 0 {
list.append("FizzBuzz")
}else if i%3 == 0 {
list.append("Fizz")
}else if i%5 == 0 {
list.append("Buzz")
}else {
list.append(String(i))
}
}
return list
}
参考:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xngt85/
https://leetcode-cn.com/problems/fizz-buzz/solution/fizz-buzz-by-leetcode-solution-s0s5/