给定一个英文字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符(需要区分大小写)。
题目描述
输入描述:
输入数据一个字符串,包括字母,数字等。
输出描述:
输出首先出现三次的那个英文字符
输出
复制e思路:遇到几次或者记录下标的算法题,我一般都会想到用hashmap,key是字符,value是次数,这个题给出的是个字符串也就是个字符数组,我们挨个把数组的元素往map里添加,每一次put
先检查map是否有此字符如果没有,直接put进去,key为此元素,value为1,如果有,则get出key的目前次数,然后现在次数是目前次数加1,把这个key remove 然后再put进去,这样一来,
key 的value值就加1了,这时候在判断,value是否为3,如果是3,再次判断此元素是否是字符,如果是则输出,如果不是继续下一个。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
char[] ch = str.toCharArray();//将字符串变成字符数组
HashMap<Character,Integer> map = new HashMap<>();
for(int i=0;i<ch.length;i++){//挨个往map里放
if(map.containsKey(ch[i])){//含有此元素
int current = map.get(ch[i]);//得到次元素的出现次数
map.remove(ch[i]);//移除此元素
map.put(ch[i],current+1);将次数加1再次put进去
if(map.get(ch[i])==3){//如果次数是3
if(Character.isLetter(ch[i])){//是否是字符
System.out.println(ch[i]);//是,则输出
break;}
}
}else{
map.put(ch[i],1);//不含此元素,直接put进去,key=此元素 value=1
}
}
}}