您的位置:首页 > 其它

在一个字符串中找到第一个只出现一次的字符。如abaccdeff输出b

2013-08-25 18:25 337 查看
public class ShuzuDemo {

/**

* @param args

*/

public static void main(String[] args) {

// countNum((byte) 1111000011);

// System.out.println(getChar("abcdadeoak"));

System.out.println(getChars("abcdadeoak"));

}

/**

* 方法一:遍历每个字符,判断这个字符在字符串中第一次出现 和最后一次出现的索引是否一样 其实时间复杂度还是O(n^2)

*/

private static char getChar(String s) {

char c = 0xff;

for (int i = 0; i < s.length(); i++) {

c = s.charAt(i);

if (s.indexOf(c) == s.lastIndexOf(c))

break;

}

return c;

}

/**

* 方法二:把字符和字符出现的次数存放到一个HashMap中, 遍历两次字符串,第一次把字符存到HashMap中并统计字符出现的次数,

* 第二次遍历字符串,第一个出现次数为1的字符就是所求 时间复杂度为O(n)

*/

private static char getChars(String s) {

char ch = ' ';

HashMap<String, Integer> map = new HashMap<String, Integer>();

for (int i = 0; i < s.length(); i++) {

String str = String.valueOf(s.charAt(i));

if (map.containsKey(str)) {

int value = map.get(str);

map.put(str, value + 1);

} else {

map.put(str, 1);

}

}

for (int i = 0; i < s.length(); i++) {

String str = String.valueOf(s.charAt(i));

if (map.get(str) == 1) {

ch = s.charAt(i);

break;

}

}

return ch;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐