javascript在两个文本中按字符长度从大到小找出相同字符串并且去重,写出代码
时间: 2023-05-27 10:07:16 浏览: 118
假设有两个字符串str1和str2,我们可以先将它们分别转换为字符数组,并按字符长度从大到小排序。然后,我们可以使用两个指针分别指向两个数组的开头,逐个比较字符的长度和值,如果相同则记录下来,并将指针向后移动,直到其中一个数组遍历结束。最后,我们得到的记录就是两个字符串中相同且去重的字符。
下面是相应的JavaScript代码:
```javascript
function findCommonChars(str1, str2) {
// 将字符串转换为字符数组并按长度从大到小排序
const arr1 = Array.from(new Set(str1.split(''))).sort((a, b) => b.length - a.length);
const arr2 = Array.from(new Set(str2.split(''))).sort((a, b) => b.length - a.length);
// 使用双指针查找相同字符
let i = 0, j = 0;
const result = [];
while (i < arr1.length && j < arr2.length) {
if (arr1[i] === arr2[j]) {
result.push(arr1[i]);
i++;
j++;
} else if (arr1[i].length > arr2[j].length) {
i++;
} else {
j++;
}
}
// 返回结果
return Array.from(new Set(result));
}
// 示例用法
const str1 = 'hello world';
const str2 = 'world hello';
console.log(findCommonChars(str1, str2)); // ['o', 'l', 'h', 'e', 'w', 'r', 'd']
```
在这个例子中,我们使用了ES6的新特性:Set。在转换为字符数组后,我们使用Set去重,然后再转换回数组。另外,我们还使用了数组排序方法sort()和双指针算法。
阅读全文