면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
사용의 HashMap
입력 순서의 출력 순서를 사용의 LinkedHashMap
HashMap의 장애,의 LinkedHashMap 저장소 입력 순서
import java.util.*;
public class Solution {
//Insert one char from stringstream
Map<Character,Integer > map=new LinkedHashMap<>();
public void Insert(char ch)
{
if(map.containsKey(ch)){
map.put(ch,map.get(ch)+1);
}
else
map.put(ch,1);
}
//return the first appearence once char in current stringstream
public char FirstAppearingOnce()
{
for(Map.Entry<Character,Integer > set:map.entrySet()){
if(set.getValue()==1)
return set.getKey();
}
return '#'; //char型要加单引号‘ ’
}
}
순회의 해시 맵
for(Map.Entry<Character,Integer > set:map.entrySet()){
if(set.getValue()==1)
return set.getKey();
}
입력 순서 순회 해시 맵
- 상기 LinkedListMap 사용하여
통상적 인 방법으로하면 횡단 - 종래의 HashMap으로
ArrayList를 배열 값에 대응하는 배열을 통해지도를보고 주문을 기록 할 때
import java.util.*;
public class Solution {
//Insert one char from stringstream
HashMap<Character,Integer> map = new HashMap<> ();
ArrayList<Character> list=new ArrayList<>();
public void Insert(char ch)
{
if(map.containsKey(ch))
map.put(ch,map.get(ch)+1);
else
map.put(ch,1);
list.add(ch);
}
//return the first appearence once char in current stringstream
public char FirstAppearingOnce()
{
for(char key:list){
if(map.get(key)==1)
return key;
}
return '#';
}
}
참고 :
for(char key:list){
if(map.get(key)==1)
return key;
}
형식합니다! ! !
- 아날로그와 해시 맵 배열
기록 StringBuffer를 횡단하여 문자열 쉬운지도의 입력 값
아날로그의 HashMap의 배열
캐릭터는 8 회계, 따라서 256, 256는 간단한 해시 테이블을 달성하기 위해 어레이의 사이즈를 적용 할 수 없을 것이다. 시간 복잡도는 O (n)은, O (N)의 공간적 복잡도이다.
public class Solution {
//Insert one char from stringstream
int[] ans = new int[256];
StringBuffer s=new StringBuffer();
public void Insert(char ch)
{
s.append(ch);
if(ans[ch]==0)
ans[ch]=1;
else
ans[ch]++;
}
//return the first appearence once char in current stringstream
public char FirstAppearingOnce()
{
char[] res=s.toString().toCharArray(); //先转换为字符串再转化为数组
for(char r:res){
if(ans[r]==1)
return r;
}
return '#';
}
}