Java题目 左旋转字符串 解题心得
2021/4/9 20:55:14
本文主要是介绍Java题目 左旋转字符串 解题心得,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
初学Java,最近一直学习基础部分,为了巩固所学的知识。于是在力扣上刷题,于是看到了下面这样一道题:
左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
题目来源:力扣(LeetCode)
看到这道题我的想法是将这个字符串放到字符数组中,然后将数组中的字符按照题目要求的顺序遍历到一个新的字符数组中。以下为我使用Java语言的代码:
class Solution { public String reverseLeftWords(String s, int n) { char[] str1= new char[s.length()]; char[] str2 = s.toCharArray(); for(int i = n,j = 0;i < s.length();i++,j++){ str1[j] = str2[i]; } for(int j = s.length()-n,i = 0;i < n;i++,j++){ str1[j] = str2[i]; } s = new String(str1); return s; } }
然后我在力扣题解区看到了对于这道题更加简便的方法:
字符串切片法
该方法主要是用到了Java中String类的substring()方法,该方法的语法与参数如下:
public String substring(int beginIndex) 或 public String substring(int beginIndex, int endIndex)
参数:
beginIndex -- 起始索引(包括), 索引从 0 开始。
endIndex -- 结束索引(不包括)。
substring()方法主要是根据传进来的索引参数返回字符串的子字符串。
于是,根据这个方法上面的题就有了如下解法:
class Solution { public String reverseLeftWords(String s, int n) { return s.substring(n, s.length()) + s.substring(0, n); } }
字符串遍历拼接
该方法核心思想为创建一个空字符串,然后利用for循环和charAt()方法,将字符串中的字符按顺序一个个的添加到新的空字符串中。
该方法中用到的Java String类中的charAt()方法,charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。该方法的语法与参数如下:
public char charAt(int index)
参数:
index -- 字符的索引。
于是,根据这个方法上面的题就有了如下解法:
class Solution { public String reverseLeftWords(String s, int n) { String res = ""; for(int i = n; i < s.length(); i++) res += s.charAt(i); for(int i = 0; i < n; i++) res += s.charAt(i); return res; } }
同理,利用求余运算,可以简化代码。
class Solution { public String reverseLeftWords(String s, int n) { String res = ""; for(int i = n; i < n + s.length(); i++) res += s.charAt(i % s.length()); return res; } }
这篇关于Java题目 左旋转字符串 解题心得的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-29RocketMQ底层原理资料详解:新手入门教程
- 2024-11-29RocketMQ源码资料解析与入门教程
- 2024-11-29[开源]6.1K star!这款电视直播源神器真的太赞啦!
- 2024-11-29HTTP压缩入门教程:轻松提升网页加载速度
- 2024-11-29JWT开发入门指南
- 2024-11-28知识管理革命:文档软件的新玩法了解一下!
- 2024-11-28低代码应用课程:新手入门全攻略
- 2024-11-28哪些办公软件适合团队协作,且能够清晰记录每个阶段的工作进展?
- 2024-11-28全栈低代码开发课程:零基础入门到初级实战
- 2024-11-28拖动排序课程:轻松掌握课程拖动排序功能