2025-2-11算法打卡

embedded/2025/2/12 21:53:41/

一,344. 反转字符串

1.题目描述:

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

2.实例:

示例 1:

输入:s = ["h","e","l","l","o"]
输出:["o","l","l","e","h"]

示例 2:

输入:s = ["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]

3.思路:

用两个指针 i 和 j,初始时分别指向数组的首尾,每次将 i 和 j 对应的元素交换,然后 i 向后移动,j 向前移动,直到 i 和 j 相遇。

4:代码:

class Solution {public void reverseString(char[] s) {int l = 0;int r = s.length - 1;while (l < r) {s[l] ^= s[r];  //构造 a ^ b 的结果,并放在 a 中s[r] ^= s[l];  //将 a ^ b 这一结果再 ^ b ,存入b中,此时 b = a, a = a ^ bs[l] ^= s[r];  //a ^ b 的结果再 ^ a ,存入 a 中,此时 b = a, a = b 完成交换l++;r--;}}
}

二,541. 反转字符串 II

1.题目描述:

给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。

如果剩余字符少于 k 个,则将剩余字符全部反转。

如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

2.实例:

示例 1:

输入:s = "abcdefg", k = 2
输出:"bacdfeg"

示例 2:

输入:s = "abcd", k = 2
输出:"bacd"

3.思路:

先按[0, k),[2k, 3k),[4k,5k)... ...依次分为多个区间,最后一个区间按题目要求确定边界,再按照区间分别用双指针将区间字符串反转即可。

4:代码:

class Solution {public String reverseStr(String s, int k) {StringBuffer res = new StringBuffer();int length = s.length();int start = 0;while (start < length) {// 找到k处和2k处StringBuffer temp = new StringBuffer();// 与length进行判断,如果大于length了,那就将其置为lengthint firstK = (start + k > length) ? length : start + k;int secondK = (start + (2 * k) > length) ? length : start + (2 * k);//无论start所处位置,至少会反转一次temp.append(s.substring(start, firstK));res.append(temp.reverse());// 如果firstK到secondK之间有元素,这些元素直接放入res里即可。if (firstK < secondK) { //此时剩余长度一定大于k。res.append(s.substring(firstK, secondK));}start += (2 * k);}return res.toString();}
}


http://www.ppmy.cn/embedded/161699.html

相关文章

MATLAB使用技巧之局部放大图的制作(二)

文章目录 前言局部放大图的具体制作小结 前言 前文MATLAB使用技巧之局部放大图的制作及文本箭头的便捷设置介绍了如何在MATLAB中绘制局部放大图&#xff0c;并且如何便捷地设置文本箭头的相关内容&#xff0c;但相关的局部放大图仍然需要我们在制作每一幅图时进行手动操作&…

【Kubernetes】常用命令全解析:从入门到实战(上)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Kubernetes航线图&#xff1a;从船长到K8s掌舵者》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Kubernetes简介 2、安装Kubernetes …

android studio开发科大讯飞最新版

实现科大讯飞版语音唤醒功能纯净版 首先需要获取唤醒信息&#xff1a;控制台-讯飞开放平台 通过开通唤醒功能&#xff0c;获取测试名额 1、通过控制台创建新应用&#xff1a; 控制台-讯飞开放平台 2、点击应用&#xff0c;选择语音唤醒(新版) 3、申请装机量(免费10个)&#…

Spring过滤器和拦截器区别?

在Spring框架中&#xff0c;过滤器和拦截器都用于在请求处理前后执行特定操作&#xff0c;但它们的作用范围和实现方式有所不同。 1. 过滤器&#xff08;Filter&#xff09; 过滤器是Servlet规范的一部分&#xff0c;主要用于在请求到达Servlet之前或响应发送给客户端之前进行…

深度学习框架PyTorch

一、框架概览 深度学习框架&#xff1a;是一个针对深度学习的科学计算库&#xff0c;在深度学习领域&#xff0c;以下是当前市场上几个主流的深度学习框架&#xff1a; TensorFlow 上一代框架&#xff1a;起始于静态图时代&#xff0c;为早期深度学习的发展做出了巨大贡献。特…

Vite 代理下的 POST 请求跨域问题排查与解决方案

&#x1f4cc; 问题描述 在 Vite 开发环境中&#xff0c;我遇到了一个奇怪的现象&#xff1a; GET 请求可以成功返回数据POST 请求却返回 403 Forbidden: Invalid CORS request但如果我手动使用 fetch 直接请求服务器 API&#xff0c;POST 请求可以成功 我的 Vite 代理配置如…

AI大模型随机初始化权重并打印网络结构方法(以Deepseekv3为例,单机可跑)

背景 当前大模型的权重加载和调用&#xff0c;主要是通过在HuggingFace官网下载并使用transformer的库来加以实现&#xff1b;其中大模型的权重文件较大&#xff08;部分>100GB&#xff09;&#xff0c;若只是快速研究网络结构和数据流变化&#xff0c;则无需下载权重。本文…

【开源项目】数字孪生武汉~超经典智慧城市CIM/BIM数字孪生可视化项目——开源工程及源码

飞渡科技数字孪生武汉CIM管理平台&#xff0c;基于自研数字孪生引擎&#xff0c;结合数字孪生、物联网IOT、云计算等信息技术&#xff0c;以城市数据资源融合共享为主线&#xff0c;打造感知、联结、计算、运用“四位一体”的城市大脑&#xff0c;赋能经济社会高质量可持续发展…