📜  如何在没有函数的情况下在 java 中反转字符串 - Java (1)

📅  最后修改于: 2023-12-03 14:52:57.084000             🧑  作者: Mango

如何在没有函数的情况下在 Java 中反转字符串

在 Java 中,我们通常可以使用内置的函数来反转字符串,例如使用 StringBuilderStringBuffer 类的 reverse() 方法。但是,如果没有这些内置的函数,我们该怎么做呢?

下面介绍两种不使用内置函数的方法来反转字符串。

方法一:使用 char 数组

1.先将字符串转换为字符数组

String str = "Hello";
char[] charArray = str.toCharArray();

2.创建一个新的字符数组,长度与原数组相同

char[] reversedArray = new char[charArray.length];

3.将原字符数组中的字符从尾部开始依次存放到新数组中

for(int i=0; i<charArray.length; i++){
    reversedArray[i] = charArray[charArray.length-1-i];
}

4.将新的字符数组转换为字符串

String reversedStr = new String(reversedArray);

完整代码如下:

String str = "Hello";
char[] charArray = str.toCharArray();

char[] reversedArray = new char[charArray.length];

for(int i=0; i<charArray.length; i++){
    reversedArray[i] = charArray[charArray.length-1-i];
}

String reversedStr = new String(reversedArray);
System.out.println(reversedStr); //输出olleH
方法二:使用位运算

1.将字符串转换为字符数组

String str = "Hello";
char[] charArray = str.toCharArray();

2.定义两个变量 startend,分别指向数组的第一个字符和最后一个字符

int start = 0;
int end = charArray.length-1;

3.不断交换 startend 指向的字符,并分别向中间移动,直到 startend 相遇

while(start < end){
    char tmp = charArray[start];
    charArray[start] = charArray[end];
    charArray[end] = tmp;
    start++;
    end--;
}

4.将字符数组转换为字符串

String reversedStr = new String(charArray);

完整代码如下:

String str = "Hello";
char[] charArray = str.toCharArray();

int start = 0;
int end = charArray.length-1;

while(start < end){
    char tmp = charArray[start];
    charArray[start] = charArray[end];
    charArray[end] = tmp;
    start++;
    end--;
}

String reversedStr = new String(charArray);
System.out.println(reversedStr); //输出olleH

以上两种方法都可以在没有函数的情况下反转字符串,但性能上可能不如使用内置函数。