leetcode每日一题2

第一个出现两次的字母

题目

给你一个由小写英文字母组成的字符串 s ,请你找出并返回第一个出现两次的字母。 注意:如果 a 的 第二次 出现比 b 的 第二次 出现在字符串中的位置更靠前,则认为字母 a 在字母 b 之前出现两次。s 包含至少一个出现两次的字母。

提示

  • 2 <= s.length <= 100

  • s 由小写英文字母组成

  • s 包含至少一个重复字母

解题思路

对于本题,我们可以分别定义一个整型数组a和一个字符数组c 整数数组用来接收每个字符出现的次数 字符数组用来接收所输入的字符串中的小写英文字母 通过出现两次 这一条件 当整型数组a接收的某个字符次数为2时即为第一个出现两次的字母 最后输出对应的字符数组c中的元素 即为答案

代码如下

public static void main(String[] args){
    String s = new String();//定义一个字符串数组
    Scanner scan = new Scanner(System.in);
    s = scan.next();//接收输入的字符串
    int b;
    b = s.length();//定义一个整形变量b等于输入的字符串的长度
    char []c = new char[b];//定义一个字符数组c 使其长度为字符串的长度
    int []a = new int [26];//定义一个整型数组a 长度为26 正好用于接收26个字母所出现的次数
    for(int i = 0;i < b;i++){
        c[i] = s.charAt(i);//把字符串中的每个字符接收到c数组中
    }
    for(int i = 0;i < b;i++){
        a[c[i] - 'a']++;//遍历c数组中的每个元素 并把每个字母的出现次数接收进a数组中
        if (a[c[i] - 'a'] == 2){//当某个字母在a数组出现次数为2时,输出这个字母
            System.out.println(c[i]);
            break;//当出现第一个出现两次字母时,就退出循环
        }
    }
}
  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值