求字符串中字符的种类及其个数

//字符串"yekmaakkccekymbvb",求出字符串中有多少种字符,以及每个字符的个数

public class aaa {

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner scanner=new Scanner(System.in);
    System.out.println("请输入一个字符串:");
    String str=scanner.nextLine();

    Map<Character, Integer> count=getCountChar(str);
    System.out.println(count);
    System.out.println("---------------");

    System.out.println(getNumChar(str));

  }
  public static Map<Character, Integer> getCountChar(String str){
    Map<Character, Integer> map=new HashMap<Character, Integer>();
    for(int i=0;i<str.length();i++){
      Character c=str.charAt(i);
      Integer count=map.get(c);
      map.put(c, (count==null?1:count+1));
    }
    return map;
  }
  public static int getNumChar(String str){
    HashSet set=new HashSet();
    char[] ch=str.toCharArray();
    for(int i=0;i<ch.length;i++){
      set.add(ch[i]);
    }
    return set.size();
  }

}

时间: 2024-09-29 00:48:55

求字符串中字符的种类及其个数的相关文章

萌新笔记——Cardinality Estimation算法学习(一)(了解基数计算的基本概念及回顾求字符串中不重复元素的个数的问题)

最近在菜鸟教程上自学redis.看到Redis HyperLogLog的时候,对"基数"以及其它一些没接触过(或者是忘了)的东西产生了好奇. 于是就去搜了"HyperLogLog",从而引出了Cardinality Estimation算法,以及学习它时参考的一些文章: http://blog.codinglabs.org/articles/algorithms-for-cardinality-estimation-part-i.html 从文章上看来,基数是指一个

找错误——下面的程序意图在于统计字符串中字符数1的个数,可惜有瑕疵

#include<stdio.h>#define maxn 10000000+10int main(){ char s[maxn]; scanf("%s",s); int tot=0; for(int i=0;i<strlen(s);i++)   if (s[i]==1)tot++; printf("%d\n",tot);} 改程序至少有3个问题,一个导致程序无法运行,另一个导致结果不正确,还有一个导致效率低下.你能找到并改正他们吗? 关于此题我只

HDU 3518 Boring counting(后缀数组啊 求字符串中不重叠的重复出现至少两次的子串的个数)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3518 Problem Description 035 now faced a tough problem,his english teacher gives him a string,which consists with n lower case letter,he must figure out how many substrings appear at least twice,moreover

[2013百度软件研发笔试题] 求字符串中连续出现同样字符的最大值

题目完整描写叙述为:用递归的方式实现一个求字符串中连续出现同样字符的最大值.如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2. 下面是我想出来的方法: #include <iostream> using namespace std; #define MAX(a, b) (a) > (b) ? (a) : (b) int Get(char *s, int n, int m)  //字符指针, 当前最长串, max最长串 {     if(*(s+1) == '\

[2013百度软件研发笔试题] 求字符串中连续出现相同字符的最大值

题目完整描述为:用递归的方式实现一个求字符串中连续出现相同字符的最大值,如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2. 以下是我想出来的方法: #include <iostream> using namespace std; #define MAX(a, b) (a) > (b) ? (a) : (b) int Get(char *s, int n, int m)  //字符指针, 当前最长串, max最长串 {     if(*(s+1) == '\0'

字符串中字符的个数和字符序列

题目 输出上次字符串中字符的个数和字符 最终的序列如下: 1, 11, 21, 1211, 111221, ... n=1时,输出字符串"1" n=2时,输出上次字符串中字符的个数和字符,因为上次字符串有1个1,所以输出11 n=3时,由于上次字符是11,有2个1,所以输出21 n=4时,由于上次字符串是21,有1个2和1个1,所以输出1211 依次类推,写个countAndSay(n)函数返回字符串. 参考代码 class Solution { public: string getN

java统计字符串中字符及子字符串个数

import java.util.Scanner;public class Counter { static Scanner scanner = new Scanner(System.in); public static void count(String s) { int low, upper, num, others; low = upper = num = others = 0; for (int i = 0; i < s.length(); i++) { if (Character.is

求字符串中某两个字符之间的字符

这个简单,留作纪念,学习之初写的: 求两个A之间的字符,并打印出来: 1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 7 const char Stra[40] = "sdfjAI Love You So Much !Ajidhj";//呵呵,乱输的 8 const char *p; 9 p = Stra; 10 11 while (*p != '\0') 12 { 13 if (*p ==

HDU 4622 求解区间字符串中的不同子串的个数

题目大意: 给定一个长度<2000的串,再给最多可达10000的询问区间,求解区间字符串中的不同子串的个数 这里先考虑求解一整个字符串的所有不同子串的方法 对于后缀自动机来说,我们动态往里添加一个字符,每次添加一个字符进去,我们只考虑那个生成的长度为当前长度的后缀自动机的节点 那么这个节点可接收的字符串的个数就是( p->l - p->f->l ),也就是以当前点为最后节点所能得到的与之前不重复的子串的个数 那么这个问题就很好解决了,共2000个位置,以每一个位置为起点构建一次后缀