LiteCode-Fizz Buzz(single if)

本文介绍了一个经典的编程面试题-FizzBuzz问题的两种解决方案:一种是常规的多重条件判断方法;另一种则是利用一次if判断实现的创新解法。通过这两种方法的对比,帮助读者更好地理解如何高效解决此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

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"
]
  • 题目模板

    class Solution {
    public:
      /**
       * @param n: An integer
       * @return: A list of strings.
       */
      vector<string> fizzBuzz(int n) {
          // write your code here
      }
    };
    
  • 题目大意

    题目很简单,在1到n的数字中,能被3和5整除输出”fizz buzz”,能被3整除输出”fizz”,能被5整除输出”buzz”。那么难点在于怎么只用一个if实现。下面先给出正常的代码,再给出一个if版。

  • 大体思路

    正常版

    class Solution {
    public:
      /**
       * @param n: An integer
       * @return: A list of strings.
       */
      vector<string> fizzBuzz(int n) {
          // write your code here
          vector<string> v;
          for(int i=1; i<=n; i++){
            if((i%3==0) && (i%5==0))
              v.push_back("fizz buzz");
            else if(i % 3 == 0)
              v.push_back("fizz");
            else if(i % 5 == 0)
              v.push_back("buzz");
            else
              v.push_back(to_string(i));
          }
          return v;
      }
    };
    

    一个if版

    先说下大体思路,就是先把数字全部填进去,然后再对3的倍数进行修改,最后对5的倍数进行修改的时候判断下是否也是3的倍数就可以了。

    class Solution {
    public:
      /**
       * @param n: An integer
       * @return: A list of strings.
       */
      vector<string> fizzBuzz(int n) {
          // write your code here
          vector<string> v;
          for(int i=1; i<=n; i++)
            v.push_back(to_string(i));
    
          for(int i=1; (3*i)<=n; i++)
            v[3*i-1] = "fizz";
    
          for(int i=1; (5*i)<=n; i++){
            if((5*i)%3 == 0)
              v[5*i-1] += " buzz";
            else
              v[5*i-1] = "buzz";
          }
          return v;
      }
    };
    
  • 题目链接 https://www.lintcode.com/problem/fizz-buzz/description

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值