このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文のおおまかな和訳については、後日掲載するものとして、ひとまず解答だけ載せておく。
public class Stitch { public String[] stitch(String[] A, String[] B, int overlap) { String[] blended = new String[A.length]; for( int i=0 ; i<A.length ; i++ ){ blended[i] = A[i].substring(0, A[i].length()-overlap); for( int j=1 ; j<=overlap ; j++ ){ double val = ((overlap+1.0-j)*A[i].charAt(A[i].length()-overlap+j-1)+ j*B[i].charAt(j-1))/(overlap+1); char cval = (char)Math.round(val); blended[i] += cval; } blended[i] += B[i].substring(overlap); } return blended; } }
昔解いた問題を下書きに置きっぱなしにしておくのももったいないので、掲載することにした。
0 件のコメント:
コメントを投稿