package Exam;
import java.util.HashMap;
/**
* 2013宜搜校园招聘笔试题
* 查找字符串中第一个只出现一次的字符
*/
public class FirstOnceChar {
/**
* 方法一:遍历每个字符,判断这个字符在字符串中第一次出现
* 和最后一次出现的索引是否一样 其实时间复杂度还是O(n^2)
*/
public static char findFirstOnce(String s) {
char ch = ' ';
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if(s.indexOf(c) == s.lastIndexOf(c)) {
ch = c;
break;
}
}
return ch;
}
/**
* 方法二:把字符和字符出现的次数存放到一个HashMap中,
* 遍历两次字符串,第一次把字符存到HashMap中并统计字符出现的次数,
* 第二次遍历字符串,第一个出现次数为1的字符就是所求
* 时间复杂度为O(n)
*/
public static char findFirstOnce1(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;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(findFirstOnce1("ababccdeef"));
}
}
查找字符串中第一个只出现一次的字符
最新推荐文章于 2023-01-11 15:57:26 发布