当前位置:   article > 正文

Leetcode - 周赛405

Leetcode - 周赛405

目录

一,3210. 找出加密后的字符串

二,3211. 生成不含相邻零的二进制字符串

三,3212. 统计 X 和 Y 频数相等的子矩阵数量


一,3210. 找出加密后的字符串

本题是一道模拟题,代码如下:

  1. class Solution {
  2. public String getEncryptedString(String s, int k) {
  3. StringBuilder res = new StringBuilder();
  4. int n = s.length();
  5. for(int i=0; i<n; i++){
  6. res.append(s.charAt((i+k)%n));
  7. }
  8. return res.toString();
  9. }
  10. }

二,3211. 生成不含相邻零的二进制字符串

本题可以使用dfs暴力枚举每一位的数字,代码如下:

  1. class Solution {
  2. List<String> res = new ArrayList<>();
  3. public List<String> validStrings(int n) {
  4. char[] t = new char[n];
  5. dfs(n,0,t);
  6. return res;
  7. }
  8. void dfs(int n, int i, char[] t){
  9. if(i == n){
  10. res.add(new String(t));
  11. return;
  12. }
  13. if(i==0 || t[i-1]=='1'){
  14. t[i] = '1';
  15. dfs(n, i+1, t);
  16. t[i] = '0';
  17. dfs(n, i+1, t);
  18. }else{
  19. t[i] = '1';
  20. dfs(n, i+1, t);
  21. }
  22. }
  23. }

这里再贴一个位运算的写法,代码如下:

  1. class Solution {
  2. public List<String> validStrings(int n) {
  3. List<String> ans = new ArrayList<>();
  4. int mask = (1<<n) - 1;
  5. for(int i=0; i<(1<<n); i++){
  6. int x = mask ^ i;//i取反
  7. if(((x>>1)&x) == 0){//取反没有相邻的1,那么i就没有相邻的0
  8. ans.add(Integer.toBinaryString((1<<n)|i).substring(1));
  9. }
  10. }
  11. return ans;
  12. }
  13. }

三,3212. 统计 X 和 Y 频数相等的子矩阵数量

本题使用二维前缀和来做,不会的可以看周赛387题解,这里不再讲解原理。

代码如下:

  1. class Solution {
  2. public int numberOfSubmatrices(char[][] grid) {
  3. int n = grid.length, m = grid[0].length;
  4. int[][][] f = new int[n+1][m+1][2];
  5. int ans = 0;
  6. for(int i=0; i<n; i++){
  7. for(int j=0; j<m; j++){
  8. f[i+1][j+1][0] = f[i][j+1][0] + f[i+1][j][0] - f[i][j][0] + (grid[i][j]=='X'?1:0);
  9. f[i+1][j+1][1] = f[i][j+1][1] + f[i+1][j][1] - f[i][j][1] + (grid[i][j]=='Y'?1:0);
  10. if(f[i+1][j+1][0] > 0 && f[i+1][j+1][0] == f[i+1][j+1][1])
  11. ans++;
  12. }
  13. }
  14. return ans;
  15. }
  16. }

第四题有时间在补上~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/859587
推荐阅读
相关标签
  

闽ICP备14008679号