【每日刷题】Day165
【每日刷题】Day165
🥕个人主页:开敲🍉
🔥所属专栏:每日刷题🍍
🌼文章目录🌼
1. LCR 092. 将字符串翻转到单调递增 - 力扣(LeetCode)
2. 424. 替换后的最长重复字符 - 力扣(LeetCode)
3. 1812. 判断国际象棋棋盘中一个格子的颜色 - 力扣(LeetCode)
1. LCR 092. 将字符串翻转到单调递增 - 力扣(LeetCode)
//思路:动态规划
class Solution {
public:
int minFlipsMonoIncr(string s)
{
int n = s.size(),ans = 2000001;
vector<vector<int>> dp(n,vector<int>(2));
if(s[0]=='0') dp[0][1] = 1;//初始化
else dp[0][0] = 1;
for(int i = 1;i<n;i++)
{
dp[i][0] = s[i]=='0'?dp[i-1][0]:dp[i-1][0]+1;//填表
dp[i][1] = min(dp[i-1][0],s[i]=='1'?dp[i-1][1]:dp[i-1][1]+1);
}
return min(dp[n-1][0],dp[n-1][1]);
}
};
2. 424. 替换后的最长重复字符 - 力扣(LeetCode)
//思路:滑动窗口
class Solution {
public:
int characterReplacement(string s, int k)
{
int n = s.size();
int hash[27] = {0};
int left = 0,right = 0,max = 0,ans = 0;
while(right<n)
{
int ch = s[right]-'A';
hash[ch]++;
max = max>hash[ch]?max:hash[ch];//记录窗口内出现次数最多的元素的个数
if(right-left+1-max>k)
{
ans = ans>right-left?ans:(right-left);//记录最大窗口长度
hash[s[left++]-'A']--;
}
right++;
}
ans = ans>right-left?ans:(right-left);
return ans;
}
};
3. 1812. 判断国际象棋棋盘中一个格子的颜色 - 力扣(LeetCode)
//思路:找规律
//放松题
class Solution {
public:
bool squareIsWhite(string c)
{
int hash[8] = {1,2,3,4,5,6,7,8};
int ret1 = hash[c[0]-'a']%2,ret2 = (c[1]-'0')%2;
if((ret1&&ret2)||(!ret1&&!ret2)) return false;
return true;
}
}
原文地址:https://blog.csdn.net/2301_78022459/article/details/144324242
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!