在一个字符串中找到第一个只出现一次的字符

来源:互联网 发布:美业软件免费 编辑:程序博客网 时间:2024/06/05 22:34
package com.String;public class FirstShowOnlyOnceElement {/** * Q17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b 1.int[] * count:count[i]表示i对应字符出现的次数 2.将26个英文字母映射:a-z <--> 0-25 3.假设全部字母都是小写 */public static void main(String[] args) {String str = "abacbcdeff";int index = find(str);if (index != -1) {char firstShowOnlyOnceElement = str.charAt(index);System.out.println(firstShowOnlyOnceElement);}}// return the index of firstShowOnlyOnceElementpublic static int find(String str) {if (str == null || str.length() == 0) {return -1;}int len = str.length();char[] letters = str.toCharArray();// In java,'char' is 16 bits,so there are 2^16 characters.// But we deal with only the 26 English letters in this case.int[] count = new int[26];// the 'HashTable'for (int i = 0; i < len; i++) {char curChar = letters[i];count[curChar - 'a']++;}for (int i = 0; i < len; i++) {char curChar = letters[i];// iterate the string,not the HashTableif (count[curChar - 'a'] == 1) {return i;}}return -1;}}
转http://bylijinnan.iteye.com/blog/1402742
0 0
原创粉丝点击