编写一个Java函数,将一个字符串作为参数,返回旋转后的字符串。
题目描述
在字符串中,旋转是指将字符串的若干个字符移动到字符串的末尾,同时保持其他字符的相对位置不变。例如,将字符串"abcd"旋转3次,得到字符串"dabc"。编写一个Java函数,将一个字符串作为参数,返回旋转后的字符串。
解题思路
这道题可以使用字符串的切片操作和拼接操作。对于字符串s,将其旋转r个字符,可以将其分为两个部分:前面部分长度为s.length() - r,后面部分长度为r。然后将前后两部分分别取出,并交换两部分的位置,再将两部分拼接在一起即可。如下所示:
public static String rotateString(String s, int r) {
int len = s.length();
//前面部分
String firstPart = s.substring(0, len - r);
//后面部分
String secondPart = s.substring(len - r);
//交换两部分的位置
String rotatedString = secondPart + firstPart;
return rotatedString;
}
上述代码中,我们使用了字符串的substring方法来获取字符串的某一部分。substring方法接受两个参数,分别是起始位置和结束位置(不包含)。例如,s.substring(0, 3)表示字符串s中下标从0到2的字符组成的字符串。
因此,我们可以先通过substring方法分别获取前面部分和后面部分。然后通过字符串的拼接操作,将后面部分和前面部分拼接在一起,就得到了旋转后的字符串。最后将旋转后的字符串返回即可。
注意事项
在实现该函数时需要注意以下几点:
1. 特殊情况:当r等于0或者s本身就是一个空字符串时,直接返回s本身。
2. 时间复杂度:在substring操作中,需要新建一个字符串对象,因此时间复杂度为O(n)。而拼接操作则需要将两个字符串拼接在一起,时间复杂度也为O(n)。因此,整个函数的时间复杂度为O(n)。
完整代码
下面是完整代码:
