算法——求反转串

16 篇文章 3 订阅

问题

我们把“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"));
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值