2016 - 2024

感恩一路有你

Java如何通过双指针算法反转字符串

浏览量:1290 时间:2024-06-20 18:46:31 作者:采采

题目:编写一个函数,将输入的字符串反转,输入字符串以字符数组的形式给出。约束:算法不可使用额外空间,即原地进行,空间复杂度为O(1)。

算法思想

该算法采用双指针的思想。首先声明两个索引指针,一个指向字符数组的首部,一个指向字符数组的尾部。然后交换这两个指针所指向的字符,继续向内移动指针,直到前一个索引位置等于或越过后一个索引位置。

编写测试代码

为了验证算法的正确性,我们需要编写一些测试代码。首先,我们可以创建一个字符数组作为输入字符串,并打印出反转前的字符串。然后,调用反转函数,将字符数组反转。最后,再次打印出反转后的字符串。

```java

public class Main {

public static void main(String[] args) {

char[] str {'h', 'e', 'l', 'l', 'o'};

("反转前的字符串:" new String(str));

reverseString(str);

("反转后的字符串:" new String(str));

}

public static void reverseString(char[] s) {

int left 0;

int right s.length - 1;

while (left < right) {

char temp s[left];

s[left] s[right];

s[right] temp;

left ;

right--;

}

}

}

```

运行测试代码

编译并运行上述测试代码,观察控制台输出结果是否与预期一致。如果反转前的字符串为"hello",则预期输出的反转后的字符串应为"olleh"。

平台提交算法

在本地测试通过后,可以将算法提交到相应的平台上进行进一步的测试。确保算法在各种情况下都能正常工作。

算法复杂度分析

该算法只需遍历一遍字符数组,时间复杂度为O(n),n为字符数组的长度,即字符串的长度。整个算法没有借助额外空间,原地操作,因此空间复杂度为O(1)。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。