我想检查包含相同字符的字符串。例如 我的字符串是:如何检查字符串在scala中包含相同的字符?
BCE
CE
我想要的结果是,
BEC = BCE //true
ECB = BCE //true
CEB = BCE //true
CBE = BCE //true
EBC = BCE //true
CE = EC //true
我想检查包含相同字符的字符串。例如 我的字符串是:如何检查字符串在scala中包含相同的字符?
BCE
CE
我想要的结果是,
BEC = BCE //true
ECB = BCE //true
CEB = BCE //true
CBE = BCE //true
EBC = BCE //true
CE = EC //true
字符串可以隐式转换为集合和集合有一个toSet
方法,使内容的设置,并设置身份与秩序无关。
OP没有回复评论问题是否重复计算。比较'groupBy身份'。或者为了好玩,'s.permutations包含s2'。 – 2014-10-09 16:07:06
@ som-snytt - 如果我们很有趣,那么'(s diff s2)+(s2 diff s)==“”'怎么样? – 2014-10-09 20:31:32
是的,这增加了我的午餐时间,thx。 – 2014-10-09 21:04:41
从你的例子看来,你只是想检查字符串是否是另一个字符串的置换。一个快速的方法是只对字符进行排序并比较结果。更有效的方法是建立其中一个字符串的直方图,然后通过另一个字符串并递减每个字符的直方图计数,如同在第二个字符串中查找它们一样。如果最后你有一个空的直方图,字符串是相同的。
考虑使用此方法,
implicit class RichString(val s1: String) extends AnyVal {
def sameAs(s2: String) = s1.sorted == s2.sorted
}
使用方法如下,"CBE".sameAs("BCE")
。
真棒解决方案:) – 2014-10-09 06:14:16
@Kocko我使用equals,substring,compareTo ... BUt它不起作用 – rosy 2014-10-09 06:04:33
'(“A”,“AA”)的结果应该是什么? – 2014-10-09 06:07:34
我想假':) – 2014-10-09 06:11:23