将字符串反转的几种实现方式

SPPan 2019-03-25 算法基础 103人已围观

java中实现字符串反转的方式有很多种,以下为比较常用的几种。

方式一

二分递归地将后面的字符和前面的字符连接起来。

public static String reverse(String srcString) {
		int length = srcString.length();
		if (length <= 1) {
				return srcString;
		}
		String left = srcString.substring(0, length / 2);
		String right = srcString.substring(length / 2, length);
		return reverse(right) + reverse(left);
}

方式二

遍历字符串,取得当前的字符拼接在模板字符串的前面。

public static String reverse(String srcString) {
		int length = srcString.length();
		String reverse = "";
		for (int i = 0; i < length; i++) {
				reverse = srcString.charAt(i) + reverse;
		}
		return reverse;
}

方式三

将字符串转成字符数组,从后往前遍历数组,然后将字符连接起来。

public static String reverse(String srcString) {
		char[] array = srcString.toCharArray();
		String reverse = "";
		for (int i = array.length - 1; i >= 0; i--) {
				reverse += array[i];
		}
		return reverse;
}

方式四

使用StringBuffer或者StringBuilder的reverse()方法。

public static String reverse(String srcString) {
		return new StringBuilder(srcString).reverse().toString();
}

public static String reverse(String srcString) {
		return new StringBuffer(srcString).reverse().toString();
}

方式五

二分交换,将后面的字符和前面对应的那个字符交换

public static String reverse(String srcString) {
	char[] array = srcString.toCharArray();
	int end = srcString.length() - 1;
	int halfLength = end / 2;
	for (int i = 0; i <= halfLength; i++) {
			char temp = array[i];
			array[i] = array[end - i];
			array[end - i] = temp;
	}

	return new String(array);
}

方式六

使用异或交换首尾字符串。

public static String reverse(String srcString) {
		char[] array = srcString.toCharArray();

		int begin = 0;
		int end = srcString.length() - 1;

		while (begin < end) {
				array[begin] = (char) (array[begin] ^ array[end]);
				array[end] = (char) (array[end] ^ array[begin]);
				array[begin] = (char) (array[end] ^ array[begin]);
				begin++;
				end--;
		}
		return new String(array);
}

方式七

基于栈后进先出的原理来实现。

public static String reverse(String s) {
		char[] array = s.toCharArray();
		Stack<Character> stack = new Stack<>();
		for (int i = 0; i < array.length; i++) {
				stack.push(array[i]);
		}

		String reverse = "";
		for (int i = 0; i < array.length; i++) {
				reverse += stack.pop();
		}
		return reverse;
}

吐槽(0)

文章评论

    共有0条评论

文章目录