题目一:字符串中第一个只出现一次的字符
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class Solution {
public char f(String s)
{
if(s.length()==0) return ' ';
Map<Character,Integer> map = new HashMap<Character, Integer>();
ArrayList<Character> array = new ArrayList<Character>();
char[] c = s.toCharArray();
for(int i=0;i<c.length;i++)
{
if(map.containsKey(c[i]))
{
map.put(c[i],map.get(c[i])+1);
}
else
{
map.put(c[i],1);
array.add(c[i]);
}
}
for(Character cc:array)
{
if(map.get(cc)==1)
return cc.charValue();
}
return ' ';
}
}
相关题目
(1)
import java.util.Set;
public class Solution {
public String f(String s1,String s2)
{
if(s1.length()==0 || s2.length()==0) return s1;
Set dict = new HashSet();
for(int i=0;i<s2.length();i++)
dict.add(s2.charAt(i));
StringBuffer result = new StringBuffer();
for(int i=0;i<s1.length();i++)
{
if(!dict.contains(s1.charAt(i)))
result.append(s1.charAt(i));
}
return result.toString();
}
}
(2)
import java.util.HashSet;
import java.util.Set;
public class Solution {
public String f(String s1)
{
if(s1.length()==0) return s1;
Set dict = new HashSet();
StringBuffer result = new StringBuffer();
for(int i=0;i<s1.length();i++)
{
if(dict.add(s1.charAt(i)))
result.append(s1.charAt(i));
}
return result.toString();
}
}
(3)
import java.util.HashMap;
import java.util.Map;
public class Solution {
public boolean f(String s1,String s2)
{
if((s1.length()==0)||(s2.length()==0)) return false;
Map<Character,Integer> dict = new HashMap();
for(int i=0;i<s1.length();i++)
{
if(dict.containsKey(s1.charAt(i)))
dict.put(s1.charAt(i), dict.get(s1.charAt(i))+1);
else
dict.put(s1.charAt(i),1);
}
for(int i=0;i<s2.length();i++)
{
if(dict.containsKey(s2.charAt(i)))
dict.put(s2.charAt(i), dict.get(s2.charAt(i))-1);
else
return false;
}
for(Integer count:dict.values())
{
if(count!=0) return false;
}
return true;
}
}
题目二:字符流中的第一个只出现一次的字符
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
public class Solution {
//Insert one char from stringstream
ArrayList<Character> array = new ArrayList<Character>();
Map<Character,Integer> dict = new HashMap();
public void Insert(char ch)
{
if(!dict.containsKey(ch))
{
array.add(ch);
dict.put(ch,1);
}
else{
dict.put(ch,dict.get(ch)+1);
}
}
//return the first appearence once char in current stringstream
public char FirstAppearingOnce()
{
for(Character cc:array)
{
if(dict.get(cc)==1)
return cc;
}
return '#';
}
}