试题
考点

算法-字符串算法-字符串算法

面5笔5

字符串反转, 如“abcdefg”变为“gfedcba”,要求空间复杂度为O(1), 时间复杂度尽量低

前往“校招VIP”小程序,刷题更快
最新校招难题刷题,快来进刷题群吧
解答

思路:

1.因为空间复杂度为o(1),不能采用new一个字符串空间,反向赋值;

2.可以想到,反转就是第一个字符跟倒数第一个字符对换,第二个跟倒数第二个… ;

3.设置两个指针head, rear ,分别放在第一位和倒数最后一位,然后向中间移动,

即可完成反转;

4.<条件反射>,要交换指针,一定设置记录结点p, 上来直接写。

核心代码
Char[] reverse( char[] str)
{
if(str.length == 0) //错误情况
return str;
int head = 0;
int rear = str.length -1;
char p; //记录结点
while( rear > head) {
p = str[rear]
str[rear]= str[head];
str[head] = p;
--rear; ++head;
}
return str;
}



评论

Vincent

2021-09-14 12:20:00

0 0

加载更多