您的位置:首页 > Web前端

剑指offer系列之33:第一个只出现一次的字符

2016-04-12 16:52 274 查看
题目描述:在字符串中找出第一个只出现一次的字符。

思路:第一个只出现一次的字符是关键,就意味着需要所有的字符进行出现次数的统计,所以我们需要两次遍历:第一次获取每个字符出现的次数;第二次把第一个只出现一次的字符找到。在Java中可以通过HashMap实现对每个字符次数的统计,由于在题目中并没有我们限定使用Java提供的内置结构,所以可以通过这种办法迅速找到第一个只出现一次的字符。 也可以自己定义一个非常简单的哈希表,根据ASCLL码值作为数组的下标对应数组的一个数字,而数组中存储的是每个字符出现的次数。

import java.util.*;

public class Solution {
public int FirstNotRepeatingChar(String str) {
if(str == null || str.length() == 0){
return -1;
}
int position = -1;;
char [] array = str.toCharArray();
int[] hash = new int[256];
for(int i = 0;i < hash.length;i++){
hash[i] = 0;
}

for(int i = 0;i < array.length;i++){
int ascll = (int)array[i];
hash[ascll]++;
}

for(int i = 0;i<array.length;i++){
int ascll = (int)array[i];
if(hash[ascll] == 1){
position = i;
break;
}
}
return position;
}
}


举一反三:如果要判断多个字符是不是在某个字符串里出现过或者
4000
统计多个字符在字符串中出现的次数,可以考虑基于数组创建一个简单的哈希表,可以用很小的空间还来时间效率上的提升。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: