在一个字符串中找到第一个只出现一次的字符 [#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
上一篇: 百钱百鸡案例