欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在一个字符串中找到第一个只出现一次的字符 [#60]

程序员文章站 2024-03-16 12:41:58
...

问题:

给定一个字符串,比如 A = “ABCDACD”, 找出第一个只出现一次的字符,在A中,第一个只出现一次的字符是‘B’。

分析:

为了判定某字符是否出现一次,我们可以从从头开始往下遍历,如果没有重复,则选取,否则抛弃。这样做的话复杂度为 O(n^2)。其实,对于判定是否存在或者存在的次数等问题,基本上都会与hastable有关,我们可以构建一个数组 array[256] (ASCII), 然后对字符串先进行处理,对于每个出现的字符,我们可以在相对应的位置+1。这样,我们再次从头开始对字符串进行遍历,如果发现某一字符个数为1,则返回该字符。

代码如下:

//if there is no such character in A, return 0 (null)
	public char firstOnlyCharacter(String A) {
		int[] array = new int[256];
		
		//store the characters in A to array
		for (int i = 0; i < A.length(); i++) {
			array[A.charAt(i)] += 1;
		}
		
		//get the first charater with only one appearance in A
		for (int i = 0; i < A.length(); i++) {
			if (array[A.charAt(i)] == 1) return A.charAt(i);
		}
		
		return 0;
	}

转载请注明出处: http://blog.csdn.net/beiyeqingteng