📅  最后修改于: 2023-12-03 14:58:48.849000             🧑  作者: Mango
颤振子字符串是指一个字符串中所有字符都在同一频率下震动的子字符串,且这个频率被称为颤振频率。
首先,我们需要完成一个函数,用于判断给定的字符串是否为颤振子字符串。这个函数需要完成以下步骤:
下面是这个函数的代码实现:
function isTrembleString(str) {
const chars = str.split('');
const freqDict = {};
chars.forEach(char => {
if (freqDict[char]) {
freqDict[char]++;
} else {
freqDict[char] = 1;
}
});
const freqList = Object.values(freqDict);
const maxFreq = Math.max(...freqList);
const minFreq = Math.min(...freqList);
return (maxFreq - minFreq) <= 1;
}
接下来,我们可以进一步完善这个函数,让它能够返回符合条件的所有颤振子字符串。这个函数需要做的就是将原字符串中的所有颤振子字符串找到并保存起来。
以下是这个函数的代码实现:
function findTrembleStrings(str) {
const trembleStrings = [];
for (let i = 0; i < str.length; i++) {
for (let j = i + 1; j <= str.length; j++) {
const subStr = str.substring(i, j);
if (isTrembleString(subStr)) {
trembleStrings.push(subStr);
}
}
}
return trembleStrings;
}
我们可以使用以下测试样例来测试上面的函数:
const str = 'abccbaabc';
const trembleStrings = findTrembleStrings(str);
上面的代码将返回一个数组,其中包含了 'cc'
,'b'
和 'a'
,这三个颤振子字符串。