news 2026/5/8 7:13:29

2026-05-08:反转字符串前缀。用go语言,给定字符串 s 和整数 k,把 s 的开头 k 个字符顺序完全倒过来(其余字符保持原样),输出新的字符串。 1 <= s.length <= 100。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2026-05-08:反转字符串前缀。用go语言,给定字符串 s 和整数 k,把 s 的开头 k 个字符顺序完全倒过来(其余字符保持原样),输出新的字符串。 1 <= s.length <= 100。

2026-05-08:反转字符串前缀。用go语言,给定字符串 s 和整数 k,把 s 的开头 k 个字符顺序完全倒过来(其余字符保持原样),输出新的字符串。

1 <= s.length <= 100。

s 仅由小写英文字母组成。

1 <= k <= s.length。

输入: s = “abcd”, k = 2。

输出: “bacd”。

解释:

前 k = 2 个字符 “ab” 反转为 “ba”。最终得到的结果字符串为 “bacd”。

题目来自力扣3794。

执行过程详细描述

步骤1:接收输入参数

程序接收到两个关键输入:

  • 待处理的原始字符串:abcd(由4个小写英文字母组成)
  • 需要反转的前缀长度:2(表示只反转字符串最开头的2个字符)

步骤2:字符串转换为可修改的字节切片

Go语言中的字符串是不可变类型,无法直接修改字符顺序,因此需要将字符串转换为字节切片

  • 原始字符串abcd转换后得到字节切片:['a', 'b', 'c', 'd']
  • 转换的目的:只有字节切片支持直接交换元素位置,才能实现字符反转

步骤3:校验并确定反转的边界

  1. 计算字节切片的总长度:长度为4
  2. 校验输入的k值:题目规定1<=k<=字符串长度,这里k=2小于4,无需调整
  3. 确定反转区间:需要反转索引0到索引1的字符(前k个字符,索引从0开始计数,结束位置为k-1)

步骤4:双指针法反转指定区间的字符

使用左指针右指针相向移动,交换指针指向的字符,直到两指针相遇:

  1. 初始化指针:左指针l指向起始位置0(字符a),右指针r指向结束位置1(字符b
  2. 第一次交换:交换l=0r=1的字符,字节切片变为['b', 'a', 'c', 'd']
  3. 指针移动:左指针l加1变为1,右指针r减1变为0
  4. 终止判断:此时l >= r,反转操作结束,无需继续交换

步骤5:保留剩余字符的原始顺序

反转完成后,索引2、3位置的字符cd全程没有被修改,保持原始顺序不变。
最终的字节切片为:['b', 'a', 'c', 'd']

步骤6:字节切片转换回字符串

将处理完成的字节切片重新转换为Go语言字符串格式,得到最终结果:bacd

步骤7:输出结果

程序将最终的字符串bacd打印输出,完成整个处理流程。


时间复杂度与额外空间复杂度分析

1. 时间复杂度

时间复杂度为O(k)(k是需要反转的前缀长度):

  • 核心操作是双指针交换字符,只需要遍历前k个字符,交换次数为k/2次;
  • 剩余的字符无需任何操作,整体执行次数和k成正比,与字符串总长度n无关。
  • 简化表示:也可写为O(n)(n为字符串总长度),因为k≤n,是等价的复杂度量级。

2. 额外空间复杂度

额外空间复杂度为O(n)(n为字符串总长度):

  • 程序额外创建了一个和原字符串长度相同的字节切片,用于存储和修改字符;
  • 除了这个字节切片外,只使用了常数个指针变量(l、r、n等),没有占用其他额外空间;
  • 额外空间大小与输入字符串的长度成正比。

总结

  1. 执行核心:转字节切片→双指针反转前k个字符→转回字符串,剩余字符保持不变;
  2. 时间复杂度:O(k)(最优情况,仅遍历需要反转的部分);
  3. 额外空间复杂度:O(n)(因字符串不可变,必须开辟新切片存储)。

Go完整代码如下:

packagemainimport("fmt")funcreversePrefix(sstring,kint)string{// 将字符串转换为字节切片以便交换bytes:=[]byte(s)n:=len(bytes)// 确保 k 不超过字符串长度ifk>n{k=n}// 反转从 0 到 k-1 的字符forl,r:=0,k-1;l<r;l,r=l+1,r-1{bytes[l],bytes[r]=bytes[r],bytes[l]}returnstring(bytes)}funcmain(){s:="abcd"k:=2result:=reversePrefix(s,k)fmt.Println(result)}

Python完整代码如下:

# -*-coding:utf-8-*-defreversePrefix(s:str,k:int)->str:# 将字符串转换为列表以便交换chars=list(s)n=len(chars)# 确保 k 不超过字符串长度ifk>n:k=n# 反转从 0 到 k-1 的字符left,right=0,k-1whileleft<right:chars[left],chars[right]=chars[right],chars[left]left+=1right-=1return''.join(chars)if__name__=="__main__":s="abcd"k=2result=reversePrefix(s,k)print(result)

C++完整代码如下:

#include<iostream>#include<string>#include<algorithm>usingnamespacestd;stringreversePrefix(string s,intk){// 确保 k 不超过字符串长度intn=s.length();if(k>n){k=n;}// 反转从 0 到 k-1 的字符for(intl=0,r=k-1;l<r;l++,r--){swap(s[l],s[r]);}returns;}intmain(){string s="abcd";intk=2;string result=reversePrefix(s,k);cout<<result<<endl;return0;}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 7:08:32

保障高并发业务稳定,浅谈大模型API的容灾与路由策略

保障高并发业务稳定&#xff0c;浅谈大模型API的容灾与路由策略 在面向公众的在线服务或高并发应用中集成大模型能力&#xff0c;已成为提升产品智能水平的重要路径。然而&#xff0c;将外部AI服务作为关键依赖引入后端架构&#xff0c;也对系统的稳定性提出了新的挑战。服务的…

作者头像 李华
网站建设 2026/5/8 7:05:31

为AI助手构建本地记忆大脑:openclaw-memory-local实战指南

1. 项目概述&#xff1a;为你的AI助手构建一个真正会“学习”的本地记忆大脑如果你和我一样&#xff0c;长期使用像OpenClaw这样的AI助手来处理日常工作&#xff0c;那你一定遇到过这个痛点&#xff1a;每次对话都像是一次全新的邂逅。你昨天刚告诉它“项目文档放在~/projects/…

作者头像 李华
网站建设 2026/5/8 7:04:37

AI智能体安全测试框架SuperClaw:红队视角下的对抗评估与DevSecOps实践

1. 项目概述&#xff1a;为什么我们需要一个“红队”AI安全测试框架&#xff1f;最近在部署和评估一些AI智能体&#xff0c;特别是像OpenClaw这样的AI编码助手时&#xff0c;我一直在思考一个问题&#xff1a;我们怎么知道它足够安全&#xff1f;我们给了它访问文件系统、执行命…

作者头像 李华
网站建设 2026/5/8 6:58:51

浏览器扩展开发实战:构建个人知识管理工具NativeMindExtension

1. 项目概述&#xff1a;一个浏览器扩展的诞生与使命最近在折腾一个挺有意思的东西&#xff0c;叫 NativeMindBrowser/NativeMindExtension。乍一看这名字&#xff0c;你可能会觉得有点玄乎&#xff0c;又是“原生”又是“心智”的&#xff0c;是不是跟什么AI哲学或者脑机接口有…

作者头像 李华
网站建设 2026/5/8 6:57:30

如何成为天龙八部单机版游戏管理员:TlbbGmTool完全指南

如何成为天龙八部单机版游戏管理员&#xff1a;TlbbGmTool完全指南 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool 还在为《天龙八部》单机版游戏数据管理而头疼吗&#xff1f;TlbbGmTool是一款专为《…

作者头像 李华
网站建设 2026/5/8 6:54:29

如果电子元件会说话,它们会这样介绍自己......

如果电路板上的元件会说话&#xff0c; 你觉得它们会说什么&#xff1f;每天和这些小家伙打交道&#xff0c; 发现它们真的……都有自己的脾气。不信&#xff1f;&#x1f447; 往下看 &#x1f447;&#x1f534; 电阻&#xff08;老实人担当&#xff09; "别急别急&…

作者头像 李华