Content
有一个字符串 \(s\),它满足以下要求:
- 只包含
.
、@
和小写字母。 - 不以
.
为开头或者结尾。 - 不以
@
为开头或者结尾,并只能包含一个@
。
请将其进行如下操作,使得这个字符串长度最小:
- 将子串
dot
转化为.
。 - 将子串
at
转化为@
。
数据范围:\(1\leqslant |s|\leqslant 100\)。
Solution
模拟就好,其实不需要什么 STL 里面的高级函数(只有一个 \(\texttt{size}\) 函数)。
首先得要找到子串 \(\texttt{dot}\) 和 \(\texttt{at}\) 的位置,尤其要注意的是 @
最多只能用一次,所以开个变量判断一下。还有不能够在开头和结尾出现 .
或者 @
。
Code
#include <cstdio>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int atflag;
string s;
int main() {
cin >> s;
int len = s.size();
for(int i = 0; i < len;) {
if(i > 0 && i < len - 3 && s[i] == 'd' && s[i + 1] == 'o' && s[i + 2] == 't') {
printf(".");
i += 3;
} else if(i > 0 && i < len - 2 && s[i] == 'a' && s[i + 1] == 't' && !atflag) {
printf("@");
i += 2;
atflag = 1;
} else {
printf("%c", s[i]);
++i;
}
}
return 0;
}