力扣刷题打卡:leetcode
题目2027. 转换字符串的最少操作次数
描述:给你一个字符串 s ,由 n 个字符组成,每个字符不是 ‘X’ 就是 ‘O’ 。一次 操作 定义为从 s 中选出 三个连续字符 并将选中的每个字符都转换为 ‘O’ 。注意,如果字符已经是 ‘O’ ,只需要保持 不变 。
返回将 s 中所有字符均转换为 ‘O’ 需要执行的 最少 操作次数。
原代码
class Solution {
public:
int minimumMoves(string s) {
int cnt = 0, n = s.size();
for (int i = 0; i < n; ++i) {
if (s[i] == 'X') {
s[i] = 'O';
if (i + 1 < n) s[i + 1] = 'O';
if (i + 2 < n) s[i + 2] = 'O';
cnt++;
}
}
return cnt;
}
};
思路:
1、每次遇到X,都把这三个连续的字符串置为’O’,并且计数一次。
总结:
1、注意最后i + 1 和 i+ 2不要溢出,所以要判断i + 1 、 i + 2 是否大于字符串长度。