
目录
- 字符串替换 (模拟)
- 神奇数 (数学)
- DNA序列 (固定长度的滑动窗口)
字符串替换 (模拟)
- 字符串替换
class StringFormat {
public:
string formatString(string A, int n, vector<char> arg, int m) {
string ret;
int j = 0;
for (int i = 0; i < n; i++)
{
if (A[i] == '%')
{
ret += arg[j++];
i++;
}
else ret += A[i];
}
if (j < arg.size())
for (int i = j; i < arg.size(); i++)
ret += arg[i];
return ret;
}
};
神奇数 (数学)
- 神奇数
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
bool func(int p, int q)
{
int t = p * 10 + q;
for (int i = 2; i <= sqrt(t); i++)
if (t % i == 0) return false;
return true;
}
bool check(int n)
{
vector<int> tmp;
while (n)
{
tmp.push_back(n % 10);
n /= 10;
}
int sz = tmp.size();
for (int i = 0; i < sz; i++)
for (int j = 0; j < sz; j++)
if (i != j && tmp[i] && tmp[j] && func(tmp[i], tmp[j]))
return true;
return false;
}
int main()
{
int a, b;
cin >> a >> b;
int ret = 0;
for (int i = a; i <= b; i++)
if (check(i)) ret++;
cout << ret << endl;
return 0;
}
DNA序列 (固定长度的滑动窗口)
- DNA序列
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
int n;
cin >> str >> n;
int len = str.size();
if (len <= n)
{
cout << str << endl;
return 0;
}
int cnt = 0;
for (int i = 0; i < n; i++)
if (str[i] == 'G' || str[i] == 'C')
cnt++;
int begin = 0, tmp = cnt;
for (int l = 0, r = n - 1; r + 1 < len;)
{
char a = str[l++], b = str[++r];
if (a == 'G' || a == 'C') tmp--;
if (b == 'G' || b == 'C') tmp++;
if (tmp > cnt)
{
begin = l;
cnt = tmp;
}
}
cout << str.substr(begin, n) << endl;
return 0;
}
本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~
