递归实现Long、Integer、String逆序输出

1.递归逆序输出Integer类型的正整数字符串:

    /**
	 * 递归输出反转后Integer类型字符串
	 * @param a
	 * @return
	 */
	public static String reverseIntToStringForLoop(Integer a) {
		if (a < 0)
			return "";
		if (a < 10)
			return Integer.toString(a);
		Integer last = a - (a / 10) * 10; // 取得这个整数的最后一位
		// 递归输出最后一位和前面的数字(去除当前a最后一位的数字)
		return Integer.toString(last) + reverseIntToStringForLoop(a / 10); 
	}

注意:Integer的最值是2147483647,且可以将Integer转换为String进行逆序输出,下面有String逆序的方法。

2.递归逆序输出Long类型的正整数字符串:

    /**
	 * 递归输出反转后Long类型字符串
	 * @param a
	 * @return
	 */
	public static String reverseLongToStringForLoop(Long a) {
		if (a < 0)
			return "";
		if (a < 10)
			return Long.toString(a);
		Long last = a - (a / 10) * 10;// 取得这个整数的最后一位
		// 递归输出最后一位和前面的数字(去除当前a最后一位的数字)
		return Long.toString(last) + reverseLongToStringForLoop(a / 10);
	}

3.递归逆序输出String类型的字符串:

    /**
	 * 递归输出反转后String类型字符串
	 * @param a
	 * @return
	 */
	public static String reverseStringForLoop(String str) {
		if ((null == str) || (str.length() <= 1)) {
			return str;
		}
		return reverseStringForLoop(str.substring(1)) + str.charAt(0);
	}

4.字符数组逆序输出String类型的字符串:

    /**
	 * 字符数组逆序循环输出
	 * @param str
	 * @return
	 */
	public static String reverseStringByArray(String str) {
		char[] ch = str.toCharArray();
		StringBuffer sb = new StringBuffer();
		for (int i = ch.length - 1; i >= 0; i--) {
			sb.append(ch[i]);
		}
		return sb.toString();
	}

5.StringBuffer逆序输出String类型字符串:

    /**
	 * StringBuffer.reverse()方法反转字符串
	 * @param str
	 * @return
	 */
	public static String reverseStringByReverse(String str) {
		return new StringBuffer(str).reverse().toString();
	}

6.逆序方法测试类:ReverseTest

public class ReverseTest {
	public static void main(String[] args) {
		Long a = 87215125285887199l;
		Integer b = 579215154; //int最大值为:2147483647
		String c = "Chinese";
		String d = "English";
		String e = "American";
		String reverseA = reverseLongToStringForLoop(a);
		String reverseB = reverseIntToStringForLoop(b);
		String reverseC = reverseStringForLoop(c);
		String reverseD = reverseStringByArray(d);
		String reverseE = reverseStringByReverse(e);
		System.out.println("Long类型a逆序输出字符串为:" + reverseA);
		System.out.println("Integer类型b逆序输出字符串为:" + reverseB);
		System.out.println("String类型c递归逆序输出字符串为:" + reverseC);
		System.out.println("String类型d逆序输出字符串为:" + reverseD);
		System.out.println("String类型e逆序输出字符串为:" + reverseE);
	}

7.测试结果输出

Long类型a逆序输出字符串为:99178858252151278
Integer类型b逆序输出字符串为:451512975
String类型c递归逆序输出字符串为:esenihC
String类型d逆序输出字符串为:hsilgnE
String类型e逆序输出字符串为:naciremA

原文地址:https://blog.csdn.net/u011635492/article/details/80715562

猜你喜欢

转载自blog.csdn.net/u011635492/article/details/80715562