在Scala中有效地重复一个字符/字符串n次



我想更有效率地做以下事情:

def repeatChar(char:Char, n: Int) = List.fill(n)(char).mkString
def repeatString(char:String, n: Int) = List.fill(n)(char).mkString
repeatChar('a',3)     // res0: String = aaa
repeatString("abc",3) // res0: String = abcabcabc

对于字符串,您可以直接写"abc" * 3,它通过StringOps工作,并在幕后使用StringBuffer

对于字符,我认为你的解决方案是相当合理的,尽管char.toString * n可以说更清晰。您是否有任何理由怀疑List.fill版本的效率不足以满足您的需求?您可以编写自己的方法,使用StringBuffer(类似于StringOps上的*),但我建议首先以清晰度为目标,然后只有当您有具体证据表明这是程序中的问题时才担心效率。

您可以简单地定义:

def repeatChar(char:Char, n: Int) = char.toString() * n
def repeatString(char:String, n: Int) = char * n

最新更新