[배열과 문자열] 중복 체크

용씨·2023년 2월 28일
0

프로그래밍 문제

목록 보기
2/3

문자열이 주어졌을 때, 이 문자열에 같은 문자가 중복되어 등장하는지 확인하는 알고리즘을 작성하라.

우선 ASCII 문자열인지 유니코드 문자열인지 확인한다. ASCII 문자열이라고 가정하고 문제를 풀어보겠다.

  1. 문자 집합에서 i번째 문자가 배열 내에 존재하는지 표시하는 불린(boolean) 배열을 사용하는 것이다. 같은 원소에 두 번 접근하면 바로 false를 리턴한다.
  2. 문자열의 길이가 문자 집합의 크기보다 클 경우 바로 false를 반환해도 된다. 결국 256 문자를 한 번씩만 사용해서 길이가 280인 문자열을 만들 수는 없으니까 말이다.
public class QuestionA {
	public static boolean isUniqueChars(String str) {
		if (str.length() > 128) {
			return false;
		}
		boolean[] char_set = new boolean[128];
		for (int i = 0; i < str.length(); i++) {
			int val = str.charAt(i);
			if (char_set[val]) return false;
			char_set[val] = true;
		}
		return true;
	}
	
	public static void main(String[] args) {
		String[] words = {"abcde", "hello", "apple", "kite", "padle"};
		for (String word : words) {
			System.out.println(word + ": " + isUniqueChars(word));
		}
	}

}

https://github.com/careercup/CtCI-6th-Edition/blob/master/Java/Ch%2001.%20Arrays%20and%20Strings/Q1_01_Is_Unique/QuestionA.java

profile
아침형 인간이 목표

0개의 댓글