2013-10-28 3 views
0

누락 된 값을 확인 소파, 수건두 배열을 비교하고 중복 나는 단어 X 문자열 배열을

x의 모든 단어가 사용되었는지 확인하고 싶습니다. 예를 들어 의자, 숟가락, 테이블, 나이프, 소파, 수건, 의자, 냉장고 등 x에서 두 단어가 두 번 사용되지 않았는지 확인하고 싶습니다. 이 예에서는 의자가 두 번 사용됩니다.

내 접근 방식은 x의 값이 항상 그 순서대로 될 것이고 테스트 케이스 배열을 생성하기 때문에 y 크기의 for 루프를 사용하고 다른 모든 인덱스로 이동하는 것입니다. x의 모든 항목을 사용했는지 확인하고 두 번 사용하지 않았는지 확인하십시오.

for(int i = 0 ; i < y.length; i+=2){ 
    test[i] = x[i]; 
} 
+1

단어의 전체 배열이 아니라 걱정할 단어가 하나 뿐이라고 가정 해 보겠습니다. 어떻게 해결할 수 있니? – iluxa

+0

"* 값은 항상 그 순서대로 될 것이므로 *는 다른 모든 인덱스로 이동합니다."라고 말합니다. 'x'의 값이'y'에 어떻게 저장되는지 이미 알고 있다면 비교할 필요가있는 이유는 무엇입니까? –

+0

두 가지 표준 솔루션은 1) 비교하기 전에 배열을 정렬하고, 2) Map 요소를 사용하여 출현하지 않은 요소를 추적합니다. –

답변

0

지도를 사용하여 결과를 저장할 수 있습니다. 예를 들면 다음과 같습니다.

Map<String, Integer> counters = new HashMap<>(); 

    for(int i = 0; i < y.length; i++) { // Why do you use i+=2? 
     String sY = x[i]; 

     if (counters.contains(sY)) { 
      counters.get(sY)++; 
     } else { 
      counters.put(sY, 1); 
     } 
    } 

    for(Don't know the type... counter, counters) { 
     if (counter.value() > 1) 
      throw new IllegalStateException("You used " + counter.key() + " " + counter.value() + " times. Thats too much"); 
    } 

이 코드는 컴파일되지 않지만주의해야합니다. 아이디어가 있습니다.

관련 문제