주어진 문자열 s
에서 단 한 번만 사용된 문자 중에서 가장 먼저 나타난 문자의 인덱스 번호를 반환하는 프로그램을 작성합니다. 인덱스는 1부터 시작하며, 한 번만 사용된 문자가 없는 경우 -1을 반환합니다.
제한사항:
s
의 길이는 100을 넘지 않습니다.이 문제는 문자열을 탐색하면서 각 문자가 몇 번 나타나는지 계산하고, 한 번만 나타난 문자 중 가장 먼저 나타난 문자의 위치를 찾아야 합니다. 이를 위해 문자의 빈도수를 계산하는 해시 테이블을 사용하고, 문자열을 처음부터 탐색하여 가장 처음 나타난 한 번만 사용된 문자의 인덱스를 찾는 로직을 구현하면 됩니다.
package inflearn_231117;
import java.util.*;
class Solution {
public int solution(String s){
int answer = -1;
Map<Character,Integer> result = new HashMap<>();
for(int i =0;i<s.length();i++) {
char temp =s.charAt(i);
if(result.containsKey(temp))
result.put(temp, result.get(temp)+1);
else
result.put(temp, 1);
}
for(int i=0;i<s.length();i++) {
if(result.get(s.charAt(i))==1) {
answer=i+1;
break;
}
}
return answer;
}
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"));
}
}