【剑指Offer1】左旋转字符串
2022/1/9 6:07:05
本文主要是介绍【剑指Offer1】左旋转字符串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目:
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。
比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
思路:
之前有做过类似的题目,当时是int数组的右移,和字符串的左旋是一样的
先全部翻转,之后分别对左右部分翻转,即可做到旋转数组的效果
代码如下:
class Solution { public String reverseLeftWords(String s, int n) { n = n % s.length(); char[] cArray = s.toCharArray(); // reverse all reverse(cArray, 0, s.length() - 1); // reverse left reverse(cArray, 0, s.length() - n -1); // reverse right reverse(cArray, s.length() - n, s.length() - 1); return String.valueOf(cArray); } public void reverse(char[] cArray, int start, int end) { while (start < end) { char c = cArray[start]; cArray[start++] = cArray[end]; cArray[end--] = c; } } }
总结:
提交一看效率不咋地,看了效率比较高的代码,属实是把自己学进去了
不多说,代码如下:
class Solution { public String reverseLeftWords(String s, int n) { if (s.length() == 0) { return s; } else { String str1 = s.substring(0,n); String str2 = s.substring(n); String newstr = str2 + str1; return newstr; } } }
首先,题目说了限制:1 <= k < s.length <= 10000,
所以跟本不需要处理取余;
其次,之前是int数组,所以截取数组比较麻烦,而这里是字符串,本身有截取函数,代码更加简洁(*但是空间还是浪费了);
之前硬生生凹出三种解法,还要学会选出最优解才行
这篇关于【剑指Offer1】左旋转字符串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门
- 2024-12-27JWT单点登录原理学习入门