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

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

作者: CoderJed | 来源:发表于2018-12-25 13:19 被阅读0次

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

    • 题目要求:求字符串中首先出现 3 次的字符。
    • 例子:比如这个字符串 "ccaabbdabcd",结果应该返回 'a'。
    • 字符串取值范围:字符串中的每个字符都是 ASCII 码表中的可见字符。
    • 代码实现:
    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次的英文字符

    • 题目要求:求字符串中首先出现 3 次的英文字符
    • 例子:比如这个字符串 "$$$ccaabbdabcd",结果应该返回 'a',因为 '$' 虽然满足首先出现3次,但是它不是英文字母。
    • 字符串取值范围:字符串中的每个字符都是 ASCII 码表中的可见字符。
    • 代码实现:只要在上面的代码中,在退出循环的条件中加上字符是英文字母的限制即可。
    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次的字符

    • 题目要求:求字符串中首先出现 3 次且仅出现 3 次的字符 。
    • 例子:比如这个字符串 "cccaabbdabcd",结果应该返回 'a',因为 'c' 虽然首先出现 3 次,但它总共出现了 4 次,不满足要求。
    • 字符串取值范围:字符串中的每个字符都是 ASCII 码表中的可见字符。
    • 代码实现:这时候,需要求出每个字符出现的次数并取第一个出现次数为 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;
            }
        }
    
    }
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/nkcflqtx.html