算法——求反转串

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41664447/article/details/88773362

问题

我们把“cba”称为“abc”的反转串。
求输入字符串的反转串。

思路

这里我们仍然使用递归的方法。
构建递归的要诀:

  • 找到相似性(对该串可以进行怎样的重复的处理,并使得每一次处理返回一个或多个更简洁的处理)
  • 定义出口(递归函数不能无限执行下去,所以要定义递归的出口)
    在这个问题中我们这样思考:
  • 首先将该字符串分为首字符和其他字符两部分。
  • 然后返回其他字符,并将首字符返回。
  • 对反回的其他字符继续使用递归操作。
  • 当最后返回的其他字符长度为1或者空时(即剩下最后一个字符),返回该字符即可。

举例

例如:求abc的反转串。

  • 首先将字符串abc传入递归函数中,返回包含参数bc的递归函数继续进行递归和字符a。
  • 上面一步返回bc的递归函数,继续返回包含参数c的递归函数继续递归和字符b。
  • 最后返回的包含参数c的递归,因为其传入参数字符串的长度为1,所以直接返回c。

实现代码

package suanfa;

public class fanzhuan{
	public static String f(String s1)
	{
		if(s1.length()<=1)
			return s1;
		return f(s1.substring(1))+s1.charAt(0);
	}
	public static void main(String[] args) {
		System.out.println(f("abcdef"));
	}

}

展开阅读全文

没有更多推荐了,返回首页