在一个字符串中找到第一个只出现一次的字符。如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;
}
}
/**
* @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;
}
}
相关文章推荐
- 17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 算法习题17:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b.
- 算法十二:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 第17 题:题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- Java:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 每日一道算法题:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 【练习】在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 15. Google面试题:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b;
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。