FizzBuzz
c++ 整型转字符串型的方法 : to_string()
class Solution {
public:
vector<string> fizzBuzz(int n) {
vector<string> ans;
for(int i = 1; i <= n; ++i) {
if(i % 5 == 0 && i % 3 == 0) {
ans.push_back("FizzBuzz");
}
else if(i % 5 == 0) {
ans.push_back("Buzz");
}
else if(i % 3 == 0) {
ans.push_back("Fizz");
}
else{
ans.push_back(to_string(i));
}
}
return ans;
}
};
计数质数
质数筛法
class Solution {
public:
int countPrimes(int n) {
if(n == 0 || n == 1) return 0;
int prime[n], p[n];
memset(p,0,sizeof(p));
int pnum = 0;
for(int i = 2; i < n; ++i) {
if(p[i] == 0) {
prime[pnum++] = 1;
p[i] = 1;
for(int j = i + i; j < n; j += i) {
p[j] = 1;
}
}
}
int cnt = 0;
for(int i = 0; i < pnum; ++i) {
if(prime[i] == 1) cnt++;
}
return cnt;
}
};
3的幂
class Solution {
public:
bool isPowerOfThree(int n) {
if(n < 1) return false;
while(n % 3 == 0) {
n = n / 3;
}
if(n == 1) return true;
else return false;
}
};
将罗马数字转换为整型
这题看完了一个题解,觉得好屌啊,就是判断他的前序数字!!!!!!妈的太厉害了!!
class Solution {
public:
int GetValueIndex(char ch) {
switch(ch) {
case 'I': return 1;
case 'V': return 5;
case 'X': return 10;
case 'L': return 50;
case 'C': return 100;
case 'D': return 500;
case 'M': return 1000;
default: return 0;
}
}
//"MCMXCIV" = 1994
int romanToInt(string s) {
int prenum = GetValueIndex(s[0]);
int sum = 0;
for(int i = 1; i < s.size(); ++i) {
int num = GetValueIndex(s[i]);
if(num > prenum) {
sum -= prenum;
}
else if(num <= prenum) {
sum += prenum;
}
prenum = num;
}
sum += prenum;
return sum;
}
};