From 9977fb5996d2e593d0bc220754d91c0abeec181f Mon Sep 17 00:00:00 2001 From: Jijie LIU Date: Wed, 19 Oct 2022 21:47:25 +0200 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20541.=20=E5=8F=8D=E8=BD=AC?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2II=EF=BC=8C=20=E6=8F=90=E4=BE=9Bscal?= =?UTF-8?q?a=E7=89=88=E6=9C=AC=E7=9A=84=E9=80=92=E5=BD=92=E8=A7=A3?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0541.反转字符串II.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/problems/0541.反转字符串II.md b/problems/0541.反转字符串II.md index 3dd6b1e8..02ad92a0 100644 --- a/problems/0541.反转字符串II.md +++ b/problems/0541.反转字符串II.md @@ -412,6 +412,26 @@ object Solution { } ``` +版本三: (递归) +```scala +import scala.annotation.tailrec + +object Solution { + def reverseStr(s: String, k: Int): String = { + @tailrec // 这个函数已经优化成了尾递归 + def reverse(s: String, needToReverse: Boolean, history: String): String = { + // 截取前k个字符(判断是否翻转) + val subStr = if (needToReverse) s.take(k).reverse else s.take(k) + // 如果字符串长度小于k,返回结果 + // 否则,对于剩余字符串进行同样的操作 + if (s.length < k) history + subStr + else reverse(s.drop(k), !needToReverse, history + subStr) + } + reverse(s, true, "") + } +} +``` + Rust: ```Rust