「这是我参与2022首次更文挑战的第8天,活动详情查看:2022首次更文挑战」。
反转字符串
题目描述
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。
示例1:
输入:s=["h","e","l","l","o"]
输出:["o","l","l","e","h"]
示例2:
输入:s=["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]
解析
- 反转字符串其实就是使用双指针的方法
- 因为字符串也是一种数组,所以元素在内存中是连续分布的
- 对于字符串我们可以定义两个指针,首指针和尾指针,
- 首指针放在字符串第一个元素位置,尾指针放在字符串中末尾的元素位置,
- 然后首指针和尾指针一个向后移动,一个向前移动,依次交换位置,
- 这样就达到了将字符串反转的目的。
代码
public void reverseString(char[] s) {
//定义首指针,指向字符串第一个元素位置
int startIndex=0;
//定义尾指针,指向字符串末尾元素位置
int endIndex=s.length-1;
//首指针从前向后移动,尾指针从后向前移动
//注意这里的首指针位置的范围为[0,s.length/2)
for(;startIndex<s.length/2;startIndex++,endIndex--){
//交换元素操作
char temp=s[startIndex];
s[startIndex]=s[endIndex];
s[endIndex]=temp;
}
}
在这里简单描述一下java中数组的特点:
- 数组是有序排列的
- 数组本身是引用数据类型,而数组中的元素既可以是基本数据类型,也可以是引用数据类型
- 创建数组对象会在内存中开辟一整块的空间
- 数组的长度一旦确定,就不能修改
数组属于引用数组类型,数组的元素也可以是引用数据类型,字符串是若干字符组成的有限序列,也可以理解为是一个字符数组。