바이트 댄스
3164 단어 데이터 구조
지금 은 여러 명의 편집 에 문제 가 있 는 문장 을 합 쳐 편집장 에 게 최종 심 사 를 보 내야 한다.예 를 들 어 편집 A 가 지적 한 병 구 는 [1, 10], [32, 45] 이다.편집 B 가 지적 한 병 구 는 [5, 16], [78, 94] 그러면 [1, 10] 과 [5, 16] 이 교차 되 어 [1, 16] [32, 45] [78, 94] 로 합병 할 수 있다.
입력 설명:
수량 m 를 편집 한 후 줄 마다 편집 한 표 시 된 다음 표 조합 입 니 다. 첫 번 째 와 마지막 표 시 는 영문 쉼표 로 구분 되 고 각 조 의 아래 표 시 는 분점 으로 구 분 됩 니 다.
출력 설명:
합 친 다음 에 표 시 된 집합 은 첫 번 째 와 마지막 에 표 시 된 것 은 영문 쉼표 로 구분 되 고 각 조 의 아래 표 시 는 분점 으로 구분 된다.반환 결 과 는 어 릴 때 부터 점점 늘 어 나 는 배열 이다.
입력
3
1,10;32,45
78,94;5,16
80,100;200,220;16,32
출력: 1, 45;78,100;200,220
자바 구현:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Problem2 {
static String input = "3
" +
"1,10;32,45
" +
"78,94;5,16
" +
"80,100;200,220;16,32";
static class Range implements Comparable{
private int start;
private int end;
public Range(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public String toString() {
return start +"," + end +";";
}
@Override
public int compareTo(Range o) {
return start - o.start;
}
public boolean isCombine(Range o){
return end+1 >= o.start;
}
public Range combine(Range o){
if(isCombine(o)){
start = Math.min(start,o.start);
end = Math.max(end,o.end);
}
return this;
}
}
static void handleInput(){
String[] lines = input.split("
");
List ranges = new ArrayList<>(10);
for (int i = 1 ; i < lines.length; i++) {
String[] pairs = lines[i].split(";");
for (String pair:
pairs) {
String[] se = pair.split(",");
ranges.add(new Range(Integer.valueOf(se[0]),Integer.valueOf(se[1])));
}
}
Range[] rs = ranges.toArray(new Range[]{});
Arrays.sort(rs);
ranges.clear();
Range cur,next;
for (int i = 0; i < rs.length-1; i++) {
cur = rs[i];
next = rs[i+1];
if(cur.isCombine(next)){
rs[i+1] = cur.combine(next);
}else{
ranges.add(cur);
}
//
if(i+1 == rs.length-1){
ranges.add(rs[i+1]);
}
}
StringBuilder output = new StringBuilder();
for (Range range:
ranges) {
output.append(range);
}
System.out.println(output.substring(0,output.length()-1));
}
public static void main(String[] args) {
handleInput();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.