`
zeyuphoenix
  • 浏览: 57951 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

收集面试题(十九)(统计字符串中相同字符的个数)

阅读更多

//统计字符串中相同字符的个数

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CountChar {

	/**
	 * The main method.
	 * 
	 * @param args
	 *            the arguments
	 */
	public static void main(String[] args) {
		String str = "yu#$SdwssddddDDDddasasas";
		countChar(str);
		System.out.println("#####################################");
		countCharMap(str);
		System.out.println("#####################################");
		countChar(str, str.length());
	}

	/**
	 * 使用char判断来统计
	 */
	public static void countChar(String str) {

		String noRepet = "";
		str = str.toLowerCase();
		int num = 0;
		Character ch = null;
		for (int i = 0; i < str.length(); i++) {
			ch = str.charAt(i);
			if (noRepet.equals("")) {

				noRepet += ch;
			} else if (noRepet.indexOf(ch) == -1) {
				noRepet += ch;
			} else {
				continue;
			}

			for (int j = 0; j < str.length(); j++) {

				if (str.charAt(j) == ch) {
					num++;
				}
			}
			System.out.println(ch + " : " + num);
			num = 0;
		}
	}
	/**
	 * 使用哈希表来统计
	 */
	public static void countCharMap(String str) {
		char[] k = str.toLowerCase().toCharArray();
		Map<Character, Integer> res = new HashMap<Character, Integer>(k.length);
		List<Character> l = new ArrayList<Character>(k.length);
		for (char c : k) {
			if (res.containsKey(c)) {
				res.put(c, res.get(c) + 1);
			} else {
				l.add(c);
				res.put(c, 1);
			}

		}

		for (Character c : l) {
			System.out.println("" + c + " : " + res.get(c));

		}
	}
	/**
	 * 使用字节来统计
	 */
	public static void countChar(String input, int len) {
		int counts[] = new int[255];
		char orders[] = new char[255];
		int nextChPos = 0;

		for (int i = 0; i < len; i++) {
			char lowerCase = Character.toLowerCase(input.charAt(i));

			// do not need track more than once
			if (counts[lowerCase & 0xff]++ == 0) {
				orders[nextChPos] = lowerCase;
				nextChPos = lowerCase & 0xff;
			}

		}

		for (char c = orders[0]; c > 0;) {
			System.out.println(c + " : " + counts[(c & 0xff)]);
			c = orders[c];
		}
	}

}

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    IT软件开发笔试面试题.docx

    18. 子字符串个数:该题目要求编写一个函数,输出字符串中某个子字符串的个数,考察了候选人的字符串处理能力和算法设计能力。 知识点:字符串处理、哈希表、频率统计。 19. 最大连续递增数字串:该题目要求编写一...

    华为C语言面试题

    此部分代码实现了一个功能,即在输入的字符串中查找由单一字符组成的最长子串。 #### 函数原型: ```c char* search(char* cpSource, char ch); ``` #### 功能描述: - 输入参数`cpSource`为待搜索的字符串,`ch`为...

    华为C语言编程面试题

    根据给定文件中的内容,我们可以总结出以下几个与C语言相关的知识点: ### 1. 查找相同字符组成的最长子串 **题目描述**:编写一个C函数,在字符串中找到由同...以上就是给定文件中的五个C语言编程面试题的详细解析。

    Java程序员面试题及答案

    #### 四、统计字符串中字符的个数 题目要求编写Java程序,统计一个字符串中数字字符、英文字符、中文字符的个数。 **示例代码**: ```java public class Test5 { public static void main(String[] args) { int ...

    Java 微软面试题

    这些题目涵盖了广泛的Java和计算机科学基础,主要涉及算法设计、数据结构、字符串处理、内存管理以及逻辑思维。以下是对部分题目的详细解析: 1. **两两之差绝对值最小的值**:这是一个关于数组处理的问题,可以...

    微软面试15题

    【微软面试题解析】 1. 两两之差绝对值最小的值:此题考察数组处理和最优化问题。可以通过排序数组,然后计算相邻元素之间的差值,找到最小的差值。 2. 字符转整数函数:可以使用C++的`std::stoi`函数,或者自定义...

    java面试题大全(2012版)

    4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...

    微软、谷歌、百度等公司经典面试100题[第101-170题].pdf

    #### 微软十五道面试题详解 **1. 整数数组两两之差绝对值最小值** - **题目描述**:给定一个整数数组,请求出两两之差绝对值最小的值。 - **解决方案**:可以先对数组进行排序,然后遍历相邻元素,计算它们之间的...

    面试题目_cc++面试-----17道经典编程题目分析

    这道题目考察了字符串处理的能力,要求读者编写一个函数来统计字符串中每个小写字母的出现次数,并输出出现次数最多的字符。 8. 输一个整数n,计算不大于n的数中和7相关的数的个数,包括能被7整出的数和含有字符7的...

    2022年最新java面试题技术面试.docx

    3. 统计字符串出现次数: 使用 FileInputStream 读取文本文件,并将其转换为字符串数组,然后遍历数组,统计目标字符串的出现次数。 4. Java 设计模式思想: a) 单例模式: 单例模式是一种创建型模式,确保一个...

    2018年java技术面试题整理

    Java 技术面试题整理 以下是 Java 技术面试题整理的知识点: 1. Servlet 执行流程: * 客户端发出 HTTP 请求 * Web 服务器将请求转发到 Servlet 容器 * Servlet 容器解析 URL 并根据 web.xml 找到相应的 Servlet ...

    嵌入式软件工程师笔试题.doc

    3. **计算字节中的1的个数**:这道题目要求统计一个字节中二进制表示下1的个数。可以通过位操作逐个检查每个比特位,如果与1相与的结果非零,则该位是1。示例代码中的`comb`函数展示了这种算法。 4. **搜索给定的...

    (1912制作)诺西笔试题面试题

    【诺西笔试题面试题详解】 1. 位运算题: - 0xABCD ^ 0x0F0F 的结果是将两个十六进制数对应位进行异或操作,0xABCD的二进制表示中,每四位与0x0F0F的二进制进行异或,结果为0x6566。 - 0xA15C | 0x9753 的结果是...

    一线互联网企业面试题.pdf

    31. 二进制数中bit为1的个数的统计方法。 32. Java内存数据的dump方法和垃圾回收的触发方式。 33. 读写分离的实现和MySQL从库同步机制。 34. Zookeeper的事务、节点和故障通知机制。 35. 领导者选举算法。 36. ...

    程序员面试题精选 真的很好的

    这些题目涵盖了程序员面试中常见...这些面试题覆盖了算法设计、数据结构、位运算、字符串处理、链表操作等多个重要领域,是程序员面试中常见的挑战。理解和掌握这些问题的解题思路对于提升编程技能和应对面试至关重要。

    众多名企面试题

    1. **位运算原理**:可以使用位运算来统计二进制中1的个数。具体做法是从最低位开始,每次将`m`与`m-1`进行按位与操作,这会消除掉`m`二进制表示中最右边的一个1。循环执行这一过程,直到`m`变为0。 2. **代码实现**...

Global site tag (gtag.js) - Google Analytics