`
zeyuphoenix
  • 浏览: 56007 次
  • 性别: 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];
		}
	}

}

 

分享到:
评论
发表评论

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

相关推荐

    java面试题大全(2012版)

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

    嵌入式面试题集-经典

    5. 字符串和数组:在华为面试题中,问候选人给一个C的函数,关于字符串和数组,找出错误。这需要候选人了解C语言中的字符串和数组操作。 6. 防火墙实现:在华为面试题中,问候选人防火墙是怎么实现的?这需要候选人...

    c++ 面试题 总结

    C++面试题 1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态? virtual修饰符会被隐形继承的。 private 也被集成,只事派生类没有访问权限而已 virtual可加可不加 子类的...

    大数据的一些面试题.pdf

    2).1000万字符串,其中有些是相同的(重复),需要把重复的全部去掉,保留没有重复的字符串。请问怎么设计和实现? 3).寻找热门查询:查询串的重复度⽐较⾼,虽然总数是1千万,但如果除去重复后,不超过3百万个,每个...

    华为机试华为OD机试算法题Python源码(41道).zip

    汽水瓶.py,求int型正整数在内存中存储时1的个数.py,求小球落地5次后所经历的路程和第5次反弹的高度.py,取近似值.py,删除字符串中出现次数最少的字符.py,蛇形矩阵.py,识别有效的IP地址和掩码并进行分类统计.py,输入一...

    程序员面试攻略 part1(共2个)

    第2章程序设计面试题的解答思路9 2.1 面试过程9 2.2 关于面试题11 2.3 答题方法11 2.4 遇到疑难时13 2.5 对解决方案进行分析15 第3章链表19 3.1 单向链表19 3.1.1 头指针的修改20 3.1.2 遍历21 3.1.3 ...

    程序员面试攻略part 2(共2个)

    第2章程序设计面试题的解答思路9 2.1 面试过程9 2.2 关于面试题11 2.3 答题方法11 2.4 遇到疑难时13 2.5 对解决方案进行分析15 第3章链表19 3.1 单向链表19 3.1.1 头指针的修改20 3.1.2 遍历21 3.1.3 ...

    Java面试宝典-经典

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

    java面试宝典2012

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

    Java面试宝典2010版

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

    最新Java面试宝典pdf版

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

    世界500强面试题.pdf

    1.4.10. 统计整数二进制表示中 1 的个数........................................................102 1.5. 面试题集合(四) ....................................................................................

    Java面试宝典2012新版

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

    C/C++面试题目及解答.doc

    a)请编写一个 C 函数,该函数给出一个字节中被置 1 的位的个数,并请给出该题的至少一个不同解法。 第一种unsigned int TestAsOne0(char log) { int i; unsigned int num=0, val; for(i...

    Java面试笔试资料大全

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

    JAVA面试宝典2010

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

    Java面试宝典2012版

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

Global site tag (gtag.js) - Google Analytics