在一个字符串中找到第一个只出现一次的字符
2013-10-31 22:16
218 查看
public class A14 { /** * 在一个字符串中找到第一个只出现一次的字符 * 如输入baccdeff,则输出b。 * @param args */ public static void main(String[] args) { String testString = "bac"; System.out.println(getFirstSingle(testString)); } /** * 因为字符只有256种可能,所以我们可以申请一个256大小的数组来 * 统计每个字符出现的次数(以空间换时间), * 统计完后,我们以原数组的元素值为下表,访问统计数组, * 直到遇到第一个访问数组元素值为1的元素, * 其所在位置的字符即为第一个只出现一次的字符。 * @param testString * @return */ private static char getFirstSingle(String testString) { int length = 'z' - 'A'; int[] temp =new int[length]; int i = 0,j=0; for(;i<testString.length();i++){ temp[testString.charAt(i)-'A']++; } for(;j<testString.length();j++){ if(temp[testString.charAt(j)-'A'] == 1){ return testString.charAt(j); }; } return 0; } /** * 不知道还有没有更加灵敏的算法,感觉上面的应该比较的接近了, * 首先是必须扫描一遍吗?这个恐怕是必须的,不遍历 * 一遍,不可能确认候选的元素的是正确的。再者说存储空间, * 有可能比上面的少吗?有把'a'到'Z'之间的空间去掉 * 但是在位图中,需要加入判断,可能会得不偿失,数据量比较大的话。 * */ }
相关文章推荐
- 在一个字符串中找到第一个只出现一次的字符(java实现)
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符,要求时间复杂度O(n)
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中,找到第一个只出现一次的字符,例如:abaccdef,输出b
- Java:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 微软面试100题之17题:在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入:abcdab,则输出:c。
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 17.在一个字符串中找到第一个只出现一次的字符
- offer-35在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个仅仅出现一次的字符。
- 在一个字符串中找到第一个只出现一次的字符。
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符