我想搜索两个字符串并返回常用字符数.如果我们有
s1 = "aabcc"
s2 = "adcaa"
输出应该是solution(s1, s2) = 3
.(s1和s2有3个公共字符——2个"a"s和1个"c".)
我的 idea 是使用粘贴连接两个字符串,然后判断新字符串中每个不同字符的计数.如果计数是偶数,我会将该计数的一半加到一个计数变量中(因此,如果我们有四个a,那么我们有两对),如果某个字符的计数是奇数,那么我们go 掉一个,将该数字的一半加到计数中(实际上忽略了无法配对的字符的额外出现).
我想也许我可以通过把我们的角色放进一个数据库来做到这一点.框架记录了每个字母的计数,但代码变得异常长:
df <- as.data.frame(paste(s1,s2,sep="") %>%
## keep first column only and name it 'characters':
select('characters' = 1) %>%
## multiple cell values (as separated by a blank)
## into separate rows:
separate_rows(characters, sep = " ") %>%
group_by(characters) %>%
summarise(count = n()) %>%
arrange(desc(count))
所以我现在想我已经把整个事情复杂化了.谁能给我指出正确的方向吗?我最初的 idea 是明智的还是不合常规的?
说明:字符串的长度不一定相同,但它们的长度都在1到14个字符之间.
澄清2:理想情况下,解决方案将采用base R(无软件包),因为这是我首先要努力做到的,但所有其他解决方案仍然受欢迎