`
miaoge
  • 浏览: 109327 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类

【String类】求字符串中有多少种字符,以及每种字符的重复次数(个数)?

阅读更多

统计某个字符串中有多少种字符,以及每个字符的个数:

   num为该字符串的初始长度,将字符串的第一个字符与后面的每个字符进行equals,

如果相等num--,然后用空字符串替换该字符;依次递归。

    charNum为字符个数。

/**
 * 求出字符串中有多少种字符,以及每个字符的个数?
 * @author 小苗
 *
 */
public class CountCharNum { 
	private int num;   //统计字符种类变量
	
	public CountCharNum(String str){
		this.num = str.length();
	}
	
	public int count(String str){
		int leng = str.length();
		if(leng == 0){
			return num;
		}else {
			String a = str.substring(0, 1);
			int charNum = 1;    //统计字符个数变量
			System.out.print("字符:"+a);
			for (int i = 1; i < str.length(); i++) {
				if(a.equals(str.substring(i, i+1))){
					num--;
					charNum++;
				}
			}
			System.out.println("  "+charNum);
			str = str.replace(a, "");
			count(str);   //用递归
		}
		return num;
	}
	
	public static void main(String[] args) {   
	  
	   String aString = "yekmaakkccekymbvbsf4w"; 
	   CountCharNum cc = new CountCharNum(aString);
	   System.out.println("共有字符类型:"+cc.count(aString));
	    }   
	}  

 

还有一种更简单的方法:

public void countChar(String str){
  int num=0;

  while(!"".equals(str)){
     String temp=str;
     System.out.print("字符:"+str.substring(0, 1));
     str=str.replaceAll(str.substring(0, 1), "");
     System.out.println(" "+temp.length()-str.length());
     num++;
  }
  
  System.out.println(" 字符种类数:"+num);
  
 }

 

1
1
分享到:
评论
3 楼 满手都是炸 2013-07-24  
同事面试遇到这个题目了
2 楼 miaoge 2010-10-09  
liumik 写道
以下是我的方法,供参考
import java.util.LinkedHashMap;
import java.util.Map;

public class CharCount {
	
	public Map<Character, Integer> countChar(String s, Map<Character, Integer> counts) {
		if (counts==null) {
			counts = new LinkedHashMap<Character, Integer>();
		}
		for (int i = 0; i<s.length(); i++) {
			char c = s.charAt(i);
			Integer count = counts.get(c);
			counts.put(c, (count==null ? 1 : count+1));
		}
		return counts;
	}

	public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i<2000; i++) {
       	 sb.append((char)i);
        }
        
		long t0 = System.currentTimeMillis();
		Map<Character, Integer> counts = new CharCount().countChar(sb.toString(), null);
		System.out.format("共有%1$d种字符,其中每种字符个数如下:\n", counts.size());
		for (Character c : counts.keySet()) {
			System.out.format("字符 %1$c %2$d\n", c, counts.get(c));
		}
		long t1 = System.currentTimeMillis();
		System.out.println(String.format("完成:%1$d ms", t1-t0));
	}
}


呵呵 很不错···谢谢朋友的分享,其实这题的目的只是让学生得到字符串字符种类的个数····
1 楼 liumik 2010-10-09  
以下是我的方法,供参考
import java.util.LinkedHashMap;
import java.util.Map;

public class CharCount {
	
	public Map<Character, Integer> countChar(String s, Map<Character, Integer> counts) {
		if (counts==null) {
			counts = new LinkedHashMap<Character, Integer>();
		}
		for (int i = 0; i<s.length(); i++) {
			char c = s.charAt(i);
			Integer count = counts.get(c);
			counts.put(c, (count==null ? 1 : count+1));
		}
		return counts;
	}

	public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i<2000; i++) {
       	 sb.append((char)i);
        }
        
		long t0 = System.currentTimeMillis();
		Map<Character, Integer> counts = new CharCount().countChar(sb.toString(), null);
		System.out.format("共有%1$d种字符,其中每种字符个数如下:\n", counts.size());
		for (Character c : counts.keySet()) {
			System.out.format("字符 %1$c %2$d\n", c, counts.get(c));
		}
		long t1 = System.currentTimeMillis();
		System.out.println(String.format("完成:%1$d ms", t1-t0));
	}
}

相关推荐

    查找字符串中出现重复次数最多的字符

    本主题关注的是如何查找一个字符串中出现重复次数最多的字符。这是一个典型的字符串处理问题,对于理解字符串操作和优化算法能力的提升非常有帮助。 首先,我们要明确问题的目标:给定一个字符串,找出其中出现频率...

    java基础-给出一个随机字符串,判断有多少字母?多少数字?

    在Java中,我们可以使用String类的toCharArray()方法将字符串转换成字符数组,然后遍历数组中的每个元素,进行判断。例如,我们可以使用if语句来判断每个字符是否是字母或数字,然后统计出字符串中的字母和数字数量...

    详解C++ string常用截取字符串方法

    本文将详细解析两种常用的C++ `std::string`截取字符串的方法:`find`和`find_last_of`,以及如何结合使用它们来满足各种字符串处理需求。 1. `find`方法: `find`方法用于在字符串中查找指定子字符串`strSub`的第...

    VBA示例之 获取一个字符串中有多少个数字字符

    `String`类型是VBA用来存储字符数据的数据类型,而`For Each...Next`循环则用于遍历字符串中的每一个字符。VBA中还有一个非常重要的功能,即`IsNumeric`函数,它可以检测一个变量或表达式是否可以转换为数字,如果是...

    java统计字符串每个字符出现次数

    在Java编程中,统计字符串中每个字符出现的次数是一个常见的任务,特别是在面试或笔试中作为考察点。这个任务可以通过使用HashMap来实现,因为HashMap提供快速的查找和插入操作,适合处理这种计数的问题。以下是一个...

    字符串统计函数,统计不同字符个数和每个字符出现的次数

    本篇将详细探讨如何实现一个统计字符串中不同字符个数以及每个字符出现次数的函数,我们将以C++语言为例进行讲解。 首先,我们需要了解基本的字符串处理函数和数据结构。在C++中,`std::string` 是用来表示字符串的...

    求字符串中的第一个数字

    根据给定的信息,我们可以分析并总结出以下与“求字符串中的第一个数字”相关的知识点: ### 1. 字符串操作基础 #### 1.1 字符串简介 在 Java 中,`String` 类用于表示不可变的字符序列,即字符串。字符串在 Java ...

    从字符串中查找字符出现次数的方法和性能对比

    在IT领域,尤其是在编程与数据处理中,统计字符串中特定字符的出现次数是一个常见的需求。本文将深入探讨几种实现这一功能的方法,并通过实际代码示例和性能对比分析,帮助读者理解每种方法的优劣,以便在实际开发中...

    TIA博途-字符转换为字符串以及截取字符串有效字符的具体方法示例.docx

    假设我们有一个较长的字符串,但只关心其中的一部分,比如从第3个字符开始的4个字符: ```scl STRING LongString := "ABCDEFGHIJ"; STRING SubString; SubString := SUBSTRING(LongString, 2, 4); // 从索引2开始,...

    求一个字符串中的连续出现次数最多的字串

    根据给定的文件信息,我们可以总结出以下关于“求一个字符串中的连续出现次数最多的字串”的相关知识点: ### 一、问题定义与分析 #### 1.1 问题背景 在计算机科学中,字符串处理是常见且重要的任务之一。本问题是...

    C++ STL string类 字符串处理函数 第二版

    在这个"第二版"的教程中,我们将深入探讨STL中的string类,这是一个专为处理文本字符串而设计的容器。我们将讨论如何使用string类提供的各种字符串处理函数,并通过`StringProcess.cpp`、`trim() 调试.cpp`和`...

    C#字符串删除指定字符串|字符串删除子字符串

    在C#编程语言中,处理字符串是常见的任务之一,其中包括删除字符串中的特定部分或子字符串。本篇文章将详细探讨如何在C#中实现这一功能,包括多种方法和实用技巧。 首先,C#提供了多种内置方法来操作字符串,比如`...

    基于Keil实现字符串函数string.h的简单应用

    基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用...

    c# 在字符串里处理重复字符

    上述代码中,`RemoveDuplicates`方法接收一个字符串`input`,通过遍历字符串并使用字典记录每个字符的出现次数。最后,只将出现一次的字符添加到结果字符串`result`中,返回去重后的字符串。 如果需要保留第一次...

    统计字符串中子字符串出现的次数,并返回

    综上所述,"统计字符串中子字符串出现的次数,并返回"这一功能涉及了C#中的字符串基础知识、字符串查找方法、循环与递归逻辑、正则表达式以及算法优化等多个方面。通过深入理解和实践这些知识点,可以更好地应对各种...

    统计一个字符串中某个字符的个数

    在编程领域,统计一个字符串中特定字符的个数是一项基础任务,它涉及到字符串处理和循环控制等基础知识。在这个场景中,我们使用汇编语言来实现这个功能。汇编语言是一种低级编程语言,它直接对应于机器指令,具有...

    C++实现的String字符串类

    在这个“C++实现的String字符串类”中,我们将探讨类的设计、重载操作符、内存管理以及类的组合。 首先,一个自定义的`String`类通常会包含以下几个核心部分: 1. **数据成员**:存储字符串的实际字符序列,通常是...

    获取字符串中的数字(两种方法)

    第一种方法是通过遍历字符串中的每个字符,并判断该字符是否为数字来提取字符串中的数字。这里我们将使用`char.IsNumber`方法来判断一个字符是否为数字。 #### 2. 实现步骤 - 定义一个字符串变量用于存储最终提取...

    java 去掉重复字符 三个方法

    因此,我们可以通过将字符串中的每个字符添加到HashSet中来去除重复字符。如果字符已经存在于集合中,尝试添加时会失败,从而达到去重的效果。 ```java public String removeDuplicates(String str) { Set...

    C#实现实体类与字符串互相转换的方法

    这段代码中,`GetEntityToString`方法接收一个类型为T的实体类对象,使用反射获取该类型的属性信息,然后将每个属性的名称和值拼接成一个以逗号分隔的字符串。 接下来,我们将讨论如何将字符串转换回实体类。这个...

Global site tag (gtag.js) - Google Analytics