[算法题] 求字符串中首先出现3次的字符及类似的变形题

2018-12-25  本文已影响0人  CoderJed

1. 求字符串中首先出现3次的字符

public static void test(String str) {

    char[] charArr = str.toCharArray();

    /*
     * 因为给定的字符串中的字符都可以用 0-126 之间的一个数字来表示
     * 所以我们定义的整型的数组来统计每个字符出现的次数
     */
    int[] countArr = new int[127];

    for(char c : charArr){
        // 只要某个元素出现的次数为 3 后,就终止循环,返回结果
        if(++countArr[c] == 3) {
            System.out.println(c);
            break;
        }
    }

}

2. 求字符串中首先出现3次的英文字符

public static void test(String str) {

    char[] charArr = str.trim().toCharArray();
    int[] countArr = new int[127];

    for(char c : charArr){
        if((('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) && ++countArr[c] == 3) {
            System.out.println(c);
            break;
        }
    }

}

3. 求字符串中首先出现3次且仅出现3次的字符

public static void test(String str) {

    char[] charArr = str.toCharArray();
    int[] countArr = new int[127];

    for(char c : charArr){
        countArr[c]++;
    }

    for(int i = 0; i < countArr.length; i++) {
        if(countArr[i] == 3) {
            System.out.println((char) i);
            break;
        }
    }

}
上一篇下一篇

猜你喜欢

热点阅读