当前位置: 首页> 健康> 养生 > 【刷题专项】— 模拟

【刷题专项】— 模拟

时间:2025/8/26 20:57:25来源:https://blog.csdn.net/weixin_62678196/article/details/140404550 浏览次数:0次

1、替换所有的问号 - 力扣(LeetCode)

思路:

  1. 首先找到需要替换的 ' ? ',位置
  2. 然后遍历26个字母与 '?' 的左右两边的是否相同,不同的话就替换
  3. 最后返回即可
  4. 代码:
    public String modifyString(String s) {char[] ch = s.toCharArray();int n = s.length();for(int i = 0; i < n; i++){if(ch[i] == '?'){//替换for(char j = 'a'; j <= 'z'; j++){if(((i == 0) || (ch[i-1] != j)) && ((i == n-1) || (ch[i+1] != j))){ch[i] = j;break;}} }}return String.valueOf(ch);}

2、提莫攻击 - 力扣(LeetCode) 

思路:

  1. 当差值小于中毒的持续时间时,那么中毒时间就是差值,大于中毒持续时间时, 那么时间就是d
  2. 代码:
    public int findPoisonedDuration(int[] timeSeries, int duration) {int ret = 0;for(int i = 1; i < timeSeries.length; i++){int x = timeSeries[i] - timeSeries[i-1];if(x >= duration){ret += duration;}else{ret += x;}}return ret + duration;}

3、Z 字形变换 - 力扣(LeetCode) 

思路:

  1. 双层循环遍历矩阵,然后填写数组
  2. 找规律,简化操作
  3. public String convert(String s, int numRows) {//处理边界if(numRows == 1){return s;}int d =  2*numRows - 2;StringBuilder ret = new StringBuilder();//处理第一行for(int i = 0; i < s.length(); i += d){ret.append(s.charAt(i));}//处理中间行//依次枚举中间行for(int k = 1; k < numRows-1; k++){for(int i = k, j = d-i; i < s.length() || j < s.length(); i+=d, j+=d){if(i < s.length()){ret.append(s.charAt(i));}if(j < s.length()){ret.append(s.charAt(j));}}}//处理最后一行for(int i = numRows-1; i < s.length(); i+=d){ret.append(s.charAt(i));}return ret.toString();}
关键字:【刷题专项】— 模拟

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: