js怎么取一个数组中的奇数位元素或者偶数位元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js怎么取一个数组中的奇数位元素或者偶数位元素相关的知识,希望对你有一定的参考价值。
参考技术A js中有一个函数filter(),可以用来过滤数组中的特定元素;filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
语法 : filter((item, index, arr) => ... )
filter中一共可已设置三个入参:其中item( 必填 )--代表数组中的每个元素,filter会对每个元素进行遍历;
index( 先填 )--每个元素的index;arr( 选填 )--指定要遍历的数组。
要筛选数组中的奇数位元素或者偶数位元素就可以用filte()方法。
例子:
893. Groups of Special-Equivalent Strings - LeetCode
Question
893. Groups of Special-Equivalent Strings
Solution
题目大意:
AB两个字符串相等的条件是:A中偶数位出现的字符与B中偶数位出现的字符相同且奇数位出现的字符也相同
按上述判定相等字符串的规则求去重后字符串的个数
思路:
strHash函数,传一个字符串,返回该字符串的奇数位字符和偶数位字符出现的在字母表中的分布
构造一个set来存储每个字符串的strHash后的结果
Java实现:
public int numSpecialEquivGroups(String[] A) {
Set<String> strSet = new HashSet<>();
for (String tmp : A) {
strSet.add(strHash(tmp));
}
return strSet.size();
}
private String strHash(String tmp) {
if (tmp.length() == 1) return tmp;
int[] cArr = new int[52];
int odd = 0;
for (char c : tmp.toCharArray()) {
cArr[(odd++ % 2 == 0 ? 26 : 0) + c - 'a']++;
}
StringBuilder sb = new StringBuilder();
for (int i : cArr) {
sb.append(i);
}
return sb.toString();
}
以上是关于js怎么取一个数组中的奇数位元素或者偶数位元素的主要内容,如果未能解决你的问题,请参考以下文章
java编写将一串字符串中的奇数位提出来相加并且偶数位每个数相加