华为od机试-字符串重新排列 js
时间: 2023-05-08 11:00:34 浏览: 221
字符串重新排列是一道比较基础的编程问题,主要考察对字符串的基本操作以及算法思维的理解。实现的思路可以分为以下几个步骤:
1. 统计字符串中每个字符出现的次数,可以用一个数组来记录。如果字符串中有多个相同的字符,数组中对应的元素值需要加上相应的次数。
2. 根据每个字符出现的次数,生成一个新的字符串。比如说原字符串为"hello",那么新字符串的可能是"eolh"。这里需要注意的是,新字符串中相同的字符的顺序需要和原字符串中相同。
3. 需要考虑特殊情况,即原字符串中有空格或者特殊字符等,需要排除这些字符。
最后,我们来看一下具体的代码实现:
```js
function rearrangeString(str) {
// 统计每个字符出现的次数
const count = {};
for (let i = 0; i < str.length; i++) {
const char = str[i];
if (/\w/.test(char)) {
if (!count[char]) {
count[char] = 1;
} else {
count[char]++;
}
}
}
// 生成新的字符串
let newStr = '';
Object.keys(count).sort((a, b) => count[b] - count[a]).forEach((char) => {
newStr += char.repeat(count[char]);
});
return newStr;
}
```
代码中,我们首先定义一个count对象用来存储每个字符出现的次数。对于字符串中的每个字符,我们使用正则表达式/\w/来判断是否为字母或数字,如果是再进行统计。统计完成后,我们使用Object.keys(count)来获取count对象的键组成的数组,再使用数组的sort方法来排序,使出现次数多的字符排在前面。最后,我们遍历排序后的数组,根据记录的出现次数,使用字符串的repeat方法来生成新字符串。
阅读全文