JavaScript:如何求出字符串中字符拼凑出的回文串的最少个数?

最近一次考试,遇到一道和回文相关的编程题,当场放弃了。题目如下:
提供一个字符串s,其中每个字符都是小写字母。并提供字符串长度。
要求:输字符串s中元素拼凑出的回文串的最小个数。其中,每个字符只能使用一次。


*例如:s=“abbaa”,输出1,因为最少可以拼凑出“ababa”这一个回文串。
s=“abc”,输出3,因为最少只能拼凑出“a”,“b”,“c”这三个回文串。*


事后个人分析,判断回文功能的代码容易实现。
较难实现的部分:
1.拼凑出回文
2.求出拼凑出的回文串的最小个数。

望大神们提供下思路和方法~若能有实现代码,万分感谢~


牧羊人nacy
浏览 694回答 1
1回答

小唯快跑啊

只需求奇数个的个数即可,因为偶数可以附加到l两边;为 0 的话如果字符串不为空就是 1,因为偶数个总可以凑出一个。function count (str) {&nbsp; str = String(str)&nbsp; if (!str) { return 0 }&nbsp; var nums = str.split('').reduce((map, s) => map.set(s, (map.get(s) || 0) + 1), new Map())&nbsp; return Array.from(nums.values()).reduce((odd, n) => n % 2 !== 0 ? odd + 1 : odd, 0) || 1}进一步简化function count (str) {&nbsp; var arr = String(str).split('')&nbsp; if (arr.length <= 0) { return 0 }&nbsp; return arr.reduce((set, s) => set.delete(s) ? set : set.add(s), new Set()).size || 1}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript