Fizz Buzz
给你一个整数 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 (以字符串形式)如果上述条件全不满足。
class Solution {
public:
vector<string> fizzBuzz(int n) {
vector<string> v;
string str;
for (int i = 1; i <= n; i++) {
if (i % 3 == 0 && i % 5 == 0) {
str = "FizzBuzz";
v.push_back(str);
} else if (i % 3 == 0) {
str = "Fizz";
v.push_back(str);
} else if (i % 5 == 0) {
str = "Buzz";
v.push_back(str);
} else {
str = to_string(i);
v.push_back(str);
}
}
return v;
}
};
计数质数
给定整数 n ,返回 所有小于非负整数 n 的质数的数量。
//埃氏筛法
class Solution {
public:
int countPrimes(int n) {
int cnt = 0;
if (n < 2) return false;
//默认所有数为质数
vector<bool> a(n, true);
for (int i = 2; i < n; i++) {
if (a[i]) {
cnt++;
for (int j = i + i; j < n; j += i) {
a[j] = false;
}
}
}
return cnt;
}
};
3的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x
class Solution {
public:
bool isPowerOfThree(int n) {
if (n < 1) return false;
while (n % 3 == 0) {
n /= 3;
}
return n == 1;
}
};
罗马数字转整数
class Solution {
public:
int romanToInt(string s) {
map<char, int> a = {{'I', 1}, {'V', 5}, {'X', 10}, {'L', 50},
{'C', 100}, {'D', 500}, {'M', 1000}};
int num = 0;
int i;
for (i = 0; i < s.size(); i++) {
if (a[s[i + 1]] > a[s[i]]) {
num -= a[s[i]];
} else {
num += a[s[i]];
}
}
return num;
}
};
怎么会有这么无聊的题~~