首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[刷题] 求字符串中首先出现3次的字符及类似的变形题

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

作者头像
CoderJed
发布2018-12-28 16:00:52
6230
发布2018-12-28 16:00:52
举报
文章被收录于专栏:Jed的技术阶梯Jed的技术阶梯

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;
        }
    }

}

第三道题,我暂时想不到更简单的实现,希望有大神可以指教。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 求字符串中首先出现3次的字符
  • 2. 求字符串中首先出现3次的英文字符
  • 3. 求字符串中首先出现3次且仅出现3次的字符
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档