一、字符串转换
简单题
class StringFormat
{
public:
string formatString(string A, int n, vector<char> arg, int m)
{
int j = 0;
string s;
for (int i = 0; i < n; i++)
{
if (A[i] == '%')
{
if (i + 1 < n && A[i + 1] == 's')
{
s += arg[j++];
i++;
}
else
{
s += A[i];
}
}
else
{
s += A[i];
}
}
while (j < m)
{
s += arg[j++];
}
return s;
}
};
二、神奇数
#include<iostream>
#include<set>
#include<vector>
#include<cmath>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
set<int> s;
for (int i = 10; i < 100; i++)
{
int flag = 0;
for (int j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
{
flag = 1;
break;
}
}
if (flag == 0)
s.insert(i);
}
int sum = 0;
while (a <= b)
{
vector<int> v;
int k = a;
while (k)
{
v.push_back(k % 10);
k /= 10;
}
for (int i = 0; i < v.size(); i++)
{
int flag = 0;
if (v[i] == 0)
continue;
for (int j = 0; j < v.size(); j++)
{
if (i == j)
continue;
if (s.find(v[i] * 10 + v[j]) != s.end())
{
sum++;
flag = 1;
break;
}
}
if (flag)
break;
}
a++;
}
cout << sum;
}
三、DNA序列
滑动窗口问题
#include<iostream>
using namespace std;
int main()
{
string s;
int n;
cin >> s;
cin >> n;
int maxi = 0;
string s3(s.begin(), s.begin() + n);
for (int i = 0; i < s.size() - n; i++)
{
int sum = 0;
string::iterator it = s.begin() + i;
while (it != s.begin() + i + n)
{
if (*it == 'C' || *it == 'G')
sum++;
it++;
}
string s2(s.begin()+i,s.begin()+i+n);
if (sum > maxi)
{
maxi = sum;
s3 = s2;
}
}
cout << s3;
}