gpt4 book ai didi

java - 带有for循环的scala回文函数

转载 作者:行者123 更新时间:2023-12-01 14:10:19 25 4
gpt4 key购买 nike

想知道Java回文函数的Scala等价物,用多个变量编写forloop在scala中很棘手

class Solution {
public boolean isPalindrome(String s) {
for (int i = 0, j = s.length() - 1; i < j; i++, j--) {
while (i < j && !Character.isLetterOrDigit(s.charAt(i))) {
i++;
}
while (i < j && !Character.isLetterOrDigit(s.charAt(j))) {
j--;
}

if (i < j && Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j)))
return false;
}

return true;
}
}

我可以在 scala 中编写回文代码,但在上述解决方案中空间复杂度为 O(1),而以下解决方案的空间复杂度为 O(N)

def Ispalindrome(inpt:Option[String]):Boolean ={
inpt match {
case Some(inpt)=> {
val sLetters=inpt.toLowerCase().filter(c=>c.isLetterOrDigit)
(sLetters==sLetters.reverse)
}
case None => false
}
}

最佳答案

这个呢?

def isPalindrome(str: String): Boolean = {
val len = str.length - 1

@annotation.tailrec
def loop(i: Int): Boolean = {
val j = len - i
if (i >= j) true
else {
if (str(i).toLower != str(j).toLower) false
else loop(i + 1)
}
}

loop(i = 0)
}

我省略了预处理部分,但您可以根据需要添加它。

关于java - 带有for循环的scala回文函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62224939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com