《剑指Offer》-58-Ⅱ-左旋字符串
string reverseLeftWords(string s, int n) { string res; for (int i = n; i < s.size(); i++) res.push_back(s[i]); for (int i = 0; i < n; i++) res.push_back(s[i]); return res; }
平平无奇写法
还有一种写法是这样的,可以不使用额外空间,思路可能比较巧妙,但是我并不觉得好
string reverseLeftWords(string s, int n) { /* 反转n前面的字符串 */ reverse(s.begin(), s.begin() + n); /* 反转n后面的字符串 */ reverse(s.begin() + n, s.end()); /* 反转整个字符串 */ reverse(s.begin(), s.end()); return s; }
首先reverse()
函数并不能保证每种语言都有实现,我希望要么不使用,要么就使用更基础的方法——每种语言都会有实现
其次虽然我不知道reverse()
方法的具体实现,但是我猜复杂度应该是 2N,算是时间换空间
本文作者:YaosGHC
本文链接:https://www.cnblogs.com/yaocy/p/17092310.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步