String 배열의 모든 반복되지 않는 항목을 찾고 싶습니다.
한다고 가정 나는했습니다 :문자열 배열에서 중복되지 않는 항목을 모두 찾는 방법은 무엇입니까?
String[] str = {"Red", "Red", "Green", "Green", "Blue"};
내가 다시 반복되지 않는 "블루"을 찾을 싶습니다.
어떻게하면됩니까?
String 배열의 모든 반복되지 않는 항목을 찾고 싶습니다.
한다고 가정 나는했습니다 :문자열 배열에서 중복되지 않는 항목을 모두 찾는 방법은 무엇입니까?
String[] str = {"Red", "Red", "Green", "Green", "Blue"};
내가 다시 반복되지 않는 "블루"을 찾을 싶습니다.
어떻게하면됩니까?
하나의 솔루션은 키로 String을 사용하고 값으로 Integer를 사용하여 Map을 만드는 것입니다. 배열을 반복하고 맵에서 String의 양을 늘려야합니다.
String[] str = {"Red", "Red", "Green", "Green", "Blue"};
Map<String,Integer> stringsCount = new HashMap<String,Integer>();
for (String s : str){
if (!stringsCount.containsKey(s))
stringsCount.put(s, 1);
else
stringsCount.put(s, stringsCount.get(s) + 1);
}
그리고 당신은 한 번만 계산 된 모든 문자열 인쇄 할 수 있습니다
for (Map.Entry<String, Integer> entry : stringsCount.entrySet())
if (entry.getValue() == 1)
System.out.println(entry.getKey());
Tx sir .. 그것은 매우 간단했습니다.이 작업 만하려고했으나, 이렇게 사용하지 않아도되었습니다. – ARP
@ARP 정답으로 받아 들일 수 있습니까? 건배. –
을 당신 수 : 배열
반복이 끝나면 목록에는 고유 한 요소 만 포함됩니다.
이것은 분명히 원래의 순서를 유지하지 않습니다.
이 경우 HashSet을 사용할 수 있습니다. 예를 들어,이 작동합니다 : 당신이 배열을 통해 단일 루프에서 독특한 단어를 얻을 수 있기 때문에
Set<String> getUniqueWords(String[] words) {
Set<String> uniqueWords = new HashSet<>();
Set<String> foundWords = new HashSet<>();
for (String word : words) {
if (foundWords.contains(word)) { //O(1)
uniqueWords.remove(word); //O(1)
} else {
uniqueWords.add(word); //O(1)
}
foundWords.add(word); //O(1)
}
return uniqueWords;
}
그래서이 방법을 사용하여, 당신은 (이론적으로) 선형 시간 복잡도를해야합니다.
배열의 복잡성은 얼마나됩니까? 필요한 코드 복잡성은 무엇입니까? – prabodhprakash
지도, 사용자 지정 함수, 반복기와 같은 솔루션이 있지만 궁금해지기를 원하면 정규식으로 이동하십시오. 그것의 좋은 운동과 학습 정규식을 즐길 수 있습니다. – Cyclotron3x3