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编写将一串字符串中的奇数位提出来相加并且偶数位每个数相加

打印整数二进制的奇数位和偶数位

c语言用while循环使一个字符串的奇数位字母不变,偶数位字母大小写转换。

找出区间[A, B]内所有数字的奇数字位出现次数为偶数,偶数字位出现次数为计数的数的个数。(数位DP)