A. Strong Password
写法一:
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
//计算时间
int ct(const string& s) {
int t = 2;
for(int i = 1; i < s.size(); i++) {
if(s[i]==s[i-1])
t+=1;
else
t+=2;
}
return t;
}
//插入函数求时间最大字符串
//const string& s:在函数参数中使用引用,可以避免拷贝整个对象,提高效率。const确保传入的对象不会被修改。
string get(const string& s) {
int mt = 0; //表示最大时间
string b;
for (char c ='a';c<='z';c++) {
//遍历每一个插入位置
for (int i=0;i<=s.size();i++) {
string n=s.substr(0, i)+c+s.substr(i);
int nt = ct(n);//利用ct函数来锁定答案
if (nt > mt) {
mt = nt;
b = n;
}
}
}
return b;
}
int main() {
int t;
cin >> t;
vector<string> results;
while (t--) {
string s;
cin >> s;
results.push_back(get(s));
}
for (const string& res : results) {
cout << res << endl;
}
return 0;
}
写法二:
#include <iostream>
#include <string>
using namespace std;
void solve() {
string s;
cin >> s;
for(int i = 0; i < s.size(); i++) {
if(s[i] == s[i + 1]) { // 如果当前字符与下一个字符相同
if(s[i] == 'x') {
s = s.substr(0, i+1) + 'y' + s.substr(i + 1);
break;
} else {
s = s.substr(0, i+1) + 'x' + s.substr(i + 1);
break;
}
}
}
//字符串长度为1
if(s.size()==1)
{
if(s[0]=='x')
s+='y';
else
s+='x';
}
cout << s << endl;
}
int main() {
int t;
cin >> t;
while(t--)
solve();
return 0;
}
B. Make Three Regions
#include <iostream>
using namespace std;
void solve()
{
string s[2];
int n;
cin >> n;
cin >> s[0] >> s[1];
int cnt = 0;
//只有两种情况是符合的
for (int i = 0; i < 2; i++) {
for (int j = 1; j < n - 1; j++) {
if (s[i][j] == '.' && s[i][j-1] == '.' && s[i][j+1] == '.') {
if (i == 0 && s[i+1][j-1] == 'x' && s[i+1][j+1] == 'x') {
cnt++;
}
if (i == 1 && s[i-1][j-1] == 'x' && s[i-1][j+1] == 'x') {
cnt++;
}
}
}
}
cout << cnt << endl;
}
int main()
{
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}