Algorithm

해시 : 한 번 사용한 최초문자

겨르 2024. 11. 16. 17:45

문자열에서 한번만 사용한 문자를 찾으려고 합니다.
매개변수 s에 문자열이 주어지면 한번만 사용한 문자 중 문자열에서 가장 먼저 나타난 문자의 인덱스 번호를 반환하는 프로그램을 작성하세요. 인덱스는 1부터 시작합니다. 한번만 사용한 문자가 없을 경우 -1를 반환하세요.

 

1. HashMap 생성 : HashMap<s, i>

2. hm.getOrDefault(i, 0) : 'i'라는 Key에 해당하는 value가 존재하면 가져오고, 존재하지 않으면 0을 default로 지정하여 사용

3. hm.get(s.charAt(i)) s.charAt(i)의 value가 1인 값 +1

import java.util.*;

public class Solution {
	public int solution(String s){
		int answer = 0;
		//s 세어서 hm에 넣기
		HashMap<Character, Integer> hm = new HashMap<>();
		for(char x : s.toCharArray()){
		    hm.put(x,hm.getOrDefault(x,0)+1);
		}
		
		//hm에서 제일 첫번째꺼 뽑기
		for(int i=0;i<s.length();i++){
		    if(hm.get(s.charAt(i))==1) return i+1;
		}

		return -1;
	}

	public static void main(String[] args){
		Solution T = new Solution();
		System.out.println(T.solution("statitsics"));
		System.out.println(T.solution("aabb"));
		System.out.println(T.solution("stringshowtime"));
		System.out.println(T.solution("abcdeabcdfg"));
	}
}

 

'Algorithm' 카테고리의 다른 글

greedy  (0) 2024.11.18
sort  (0) 2024.11.18
자료구조 활용 : HashSet  (0) 2024.11.18