欢迎访问宙启技术站
智能推送

编写一个Java函数,将一个字符串作为参数,返回旋转后的字符串。

发布时间:2023-06-01 01:10:22

题目描述

在字符串中,旋转是指将字符串的若干个字符移动到字符串的末尾,同时保持其他字符的相对位置不变。例如,将字符串"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)。

完整代码

下面是完整代码: