首页 > 试题广场 >

统计字符

[编程题]统计字符
  • 热度指数:43660 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一个字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符(需要区分大小写)。

数据范围:字符串长度满足

输入描述:
输入数据一个字符串,包括字母,数字,字符等。


输出描述:
输出首先出现三次的那个英文字符
示例1

输入

Have you ever gone shopping and

输出

e
示例2

输入

nowcoder@mail.com

输出

o
import java.util.*;


public class Main {

    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String ss = sc.nextLine();
        int[] arr = new int [150];
        int n = 0;
        for(int i=65;i<=90;i++){
            arr[i] = 1;
        }
        for(int i=97;i<=122;i++){
            arr[i] = 1;
        }
                int index=0;
                for(int j =0;j<ss.length();j++){
                    if(index!=0){
                        break;
                    }
                    arr[(int)ss.charAt(j)]+=1;
                    for(int i=65;i<=122;i++){
                        if(arr[i] == 4){
                            index = j;
                            System.out.println(ss.charAt(index));
                            break;
                            }
                    }
                }
        
    }

}
纯计数2333

发表于 2018-11-08 17:00:38 回复(0)
import java.util.Scanner;
import java.util.Map;
import java.util.TreeMap;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            char[] ch = sc.nextLine().toCharArray();
            Map<Character,Integer> map = new TreeMap<>();
            for(int i=0;i<ch.length;i++){
                if((ch[i] >='a' && ch[i]<='z') || (ch[i] >='A' && ch[i] <='Z')){
                    if(map.containsKey(ch[i])){
                        map.put(ch[i],map.get(ch[i])+1);
                        if(map.get(ch[i]) == 3){
                            System.out.println(ch[i]);
                            break;
                        }
                    }else{
                        map.put(ch[i],1);
                    }
                }
            }
        }
    }
}

发表于 2018-10-06 14:19:18 回复(0)
import java.util.HashMap; import java.util.Map; import java.util.Scanner;  public class Main { public static void main(String[] args) {
        Scanner in = new Scanner(System.in);  String string = in.nextLine();  string = string.replace(" ","").replaceAll("[^a-zA-Z0-9]","");  String[] strings = string.split("");  Map<String,Integer> map = new HashMap();   for (String s : strings) { if (!map.containsKey(s)) {
                map.put(s, 1);  } else {
                map.put(s, map.get(s) + 1);  if (map.containsValue(3)) {
                    System.out.println(s);  return;  }
            }
        }
    }
}
发表于 2018-09-30 15:43:58 回复(0)
import java.util.HashMap;
import java.util.Scanner;

public class Main {     public static void main(String[] args) {         // TODO Auto-generated method stub         Scanner in = new Scanner(System.in);         while (in.hasNext()) {             String string = in.nextLine();             System.out.println(threeTime(string));         }     }          public static char threeTime(String str)     {         String string = str;         //除了a-zA-Z都替换为空,使得字符串只有英文字符         string = string.replaceAll("[^a-zA-Z]", "");         HashMap<Character, Integer> map = new HashMap<>();         for (int i = 0; i < string.length(); i++) {             char c = string.charAt(i);             if (map.containsKey(c)) {                 int value = map.get(c);                 if (value - 2 == 0) {                     return c;                 } else {                     map.put(c, ++value);                 }             } else {                 map.put(c, 1);             }             //System.out.println(c + "===" + map.get(c));         }         return '#';     }

}


发表于 2018-09-18 21:06:15 回复(0)

import java.util.Scanner;
public class Main{
 public static void main(String []args){
 Scanner sc=new Scanner(System.in);
 String str=sc.nextLine().replace(" ","");
 int []s=new int[127];
 for(int i=0;i<str.length();i++){
                s[str.charAt(i)]++;
               if(s[str.charAt(i)]==3&&(str.charAt(i)>='a'&&str.charAt(i)<='z'||str.charAt(i)>='A'&&str.charAt(i)<='Z')){
 char c=str.charAt(i);
 System.out.println(c);
 break;}
 }
 }
 }

编辑于 2018-09-07 14:06:56 回复(0)

因为要区分大小写,26个大写,26个小写字母,因此维护一个大小为52的数组,来保存该字母出现的次数,遍历循环整个字符串,统计每个字符出现的次数,当出现次数为3时则找到了该字符,并跳出循环。

import java.util.Scanner;

public class CountChar {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine().trim();
        char[] strs = str.toCharArray();
        int[] charCount = new int[52];
        for(int i=0; i<strs.length; i++) {
            if(strs[i] != ' ') {
                if(strs[i]>='A' && strs[i]<='Z') {
                    charCount[strs[i] - 'A'] ++;
                    if(charCount[strs[i] - 'A']==3) {
                        System.out.println(strs[i]);
                        break;
                    }
                }else if(strs[i]>='a' && strs[i]<='z') {
                    charCount[strs[i] - 'a' + 26] ++;
                    if(charCount[strs[i] - 'a' + 26]==3) {
                        System.out.println(strs[i]);
                        break;
                    }
                }

            }
        }
    }

}
发表于 2018-08-29 21:36:34 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        if (in.hasNext()) {
            String str = in.nextLine();
            System.out.println(threetimes(str));
        }

    }

    public static String threetimes(String str) {
        String[] zimu = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "g", "k", "l", "m", "n", "o", "p", "q", "r", "s",
                "t", "u", "v", "w", "x", "y", "z" };
        int[] lnumber = new int[26];
        int[] unumber = new int[26];
        for (int i = 0; i < str.length(); i++) {
            String s = str.substring(i, i + 1);
            for (int j = 0; j < zimu.length; j++) {
                if (s.equals(zimu[j])) {
                    lnumber[j]++;
                    if (lnumber[j] == 3) {
                        return zimu[j];
                    }
                } else if (s.toLowerCase().equals(zimu[j])) {
                    unumber[j]++;
                    if (unumber[j] == 3) {
                        return zimu[j].toUpperCase();
                    }
                }
            }

        }
        return null;
    }
}

发表于 2018-04-10 15:13:02 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        Map<Character,Integer> values = new HashMap();
        char target = '\0';
        String vals = sc.nextLine();
        for(int i = 0;i<vals.length();i++){
             char c = vals.charAt(i);
            if(!String.valueOf(c).matches("[a-zA-Z]")){//去除非英文字母
                continue;
            }
            if(values.containsKey(c)){
                int val = values.get(c);
                if(++val==3){
                    target = c;
                    break;
                }else{
                    values.put(c,val);
                }
            }else{
               values.put(c,1); 
            }
        }
        System.out.println(target);
    }
}
发表于 2018-03-27 17:36:47 回复(0)

竟然有坑

  • 要求输出结果是英文字符
  • 出现次数是大于等于3,而非正好等于3

   import java.util.LinkedHashMap;
   import java.util.Scanner;

   public class Main {

    public static void main(String[] args) {


    Scanner in = new Scanner(System.in);
     while (in.hasNext()) {
         String s = in.nextLine();
         count(s);
     }


    }

    private static void count(String s) {


    LinkedHashMap map = new LinkedHashMap();
     for (int i = 0; i < s.length(); i++) {
         char c = s.charAt(i);
         if (map.containsKey(c)) {
             if (map.get(c) == 2 && Character.toUpperCase(c) >= 'A' && Character.toUpperCase(c) <= 'Z') {
                 System.out.println(c);
                 break;
             }
             map.put(c, map.get(c) + 1);
         } else {
             map.put(c, 1);
         }
     }


    }
    }
编辑于 2018-03-26 17:03:16 回复(0)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String line = reader.readLine();
        System.out.println(search(line));
    }

    private static char search(String str) {
        int[] counts = new int[128];
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c >= 'A' && c <= 'z') {
                int index = c - 'A';
                counts[index] += 1;
                if (counts[index] == 3) {
                    return c;
                }
            }
        }
        return ' ';
    }
}
发表于 2018-01-26 22:27:01 回复(0)
//看清题目:字符串包括字母、数字等,但统计的是字母
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String string = in.nextLine();
            int[] chs = new int[256];
            for (int i = 0; i < string.length(); i++) {
                if (Character.isAlphabetic(string.charAt(i))) {
                    chs[string.charAt(i)]++;
                    if (chs[string.charAt(i)] == 3) {
                        System.out.println(string.charAt(i));
                        break;
                    }
                }
            }
        }
    }
}

编辑于 2017-12-25 22:12:25 回复(0)
import java.util.HashMap; import java.util.Map; import java.util.Scanner;  public class Main
{ public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);  while (scanner.hasNext()) {
            String str = scanner.nextLine();  Map<Character, Integer> properties = new HashMap<>();  int countc;  for (int i = 0; i < str.length(); i++) { if (properties.containsKey(str.charAt(i))) {
                    countc = properties.get(str.charAt(i)) + 1;  properties.put(str.charAt(i), countc);  if (countc == 3 && ((str.charAt(i) >= 65 && str.charAt(i) <= 90) || (str.charAt(i) >= 97 && str.charAt(i) <= 122))) {
                        System.out.println(str.charAt(i));  break;  }
                } else {
                    properties.put(str.charAt(i), 1);  }
            }
        }
    }
}
这个题感觉最重要的就是要理解题意,我理解错了两次,第一个注意点就是输入的字符串不只是英文字母,还可能是别的字符,第二个注意点就是要输出的是第一次出现三次的英文字母,而不是任意字符。理解题意很重要,其次就是数据结构,我用的是一个Map结构,把出现的字符,以及这个字符的出现次数存了起来,出现三次的英文字母后就结束循环。
发表于 2017-11-28 21:00:54 回复(0)
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            char[] arr = sc.nextLine().replaceAll("[^a-zA-Z]", "").toCharArray();
            Map<Character, Integer> map = new HashMap<>();
            for (int i = 0; i < arr.length; i ++) {
                map.put(arr[i], map.containsKey(arr[i]) ? map.get(arr[i]) + 1 : 1);
                if(map.get(arr[i]) == 3) {
                    System.out.println(arr[i]);
                    break;
                }
            }
        }
    }
}

发表于 2017-11-20 23:29:43 回复(0)

import java.util.HashMap;
import java.util.Scanner;
// 哪里不对求指教
/**

  • @author AmVilCres
  • @desc
    */
    public class ThirdWord {
    public static void main(String[] args) {

     //System.out.println(">".toLowerCase().equals(">"));
     Scanner sc = new Scanner(System.in);
     String str = sc.nextLine();
     sc.close();
     str = str.replaceAll(" +", "");
     //System.out.println(str);
     char[] chs = str.toCharArray();
     HashMap<String,Integer> map = new HashMap<>();
     for(char c :chs) {
         if(map.get((c+"").toLowerCase())==null) {
             map.put((c+"").toLowerCase(), 1);
         }else {
             map.put((c+"").toLowerCase(), map.get((c+"").toLowerCase())+1);
         }
    
         if(map.get((c+"").toLowerCase()) == 3) {
             System.out.println(c);
             break;
         }
     }
    

    }
    }

编辑于 2017-11-01 17:54:59 回复(0)
 
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Scanner;
 
/**
 * @author jiaqing.xu@hand-china.com
 * @version 1.0
 * @name
 * @description 给定一个英文字符串, 请写一段代码找出这个字符串中首先出现三次的那个英文字符。
 * @date 2017/10/15
 */
publicclassMain {
    publicstaticvoidmain(String[] args) {
        Scanner sc = newScanner(System.in);
        String str = sc.nextLine();
        //map中存放字符和对应的出现次数
        Map<Character, Integer> map = newHashMap();
        //将字符串转换为字符数组
        char[] temp = str.toCharArray();
        for(inti = 0; i < temp.length; i++) {
            //判断是否为字符
            if((!(temp[i] >= 'a'&& temp[i] <= 'z')) && (!(temp[i] >= 'A'&& temp[i] <= 'Z'))) {
                continue;//进入下次循环
            } else{
                if(!map.containsKey(temp[i])) {//不包含则初始为1
                    map.put(temp[i], 1);
                } else{//包含情况
                    intcount = map.get(temp[i]) + 1;//如果包含数目+1
                    if(count == 3) {
                        System.out.println(temp[i]);
                        break;//退出循环
                    }
                    map.put(temp[i], count);
                }
            }
        }
    }
}

发表于 2017-10-15 20:37:04 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] atgs){
        Scanner sc = new Scanner(System.in);
        int[] d = new int[256];
        String s = sc.nextLine();
        char[] a = s.toCharArray();
        for(char c:a){
            if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
                d[c]++;
                if(d[c]==3){
                    System.out.print(c);
                    return;
                }
            }            
        }
    }
}

发表于 2017-09-22 13:58:47 回复(0)