public class StringTrain
{
public String buildTrain(String[] cars) {
String train = cars[0];
for (int i=1; i < cars.length; i++) {
for (int j = cars[i].length()-1; j > 0; j--) {
String s1 = cars[i].substring(0,j);
if (!train.equals(s1) && train.endsWith(s1)) {
train += cars[i].substring(j);
break;
}
}
}
String t="";
for (int i=0; i < train.length(); i++) {
char ch = train.charAt(i);
String s = train.substring(i+1);
if(s.indexOf(ch) == -1) t += ch;
}
return "" + train.length() + " " + t;
}
}
Explanation
첫 번째 for문:
가장 많이 겹친 글자들부터 시작해야 하고 마지막 글자는 포함되면 안되므로, j = cars[i].length() - 1이다.
s1이 train과 같으면 안되므로 !train(equals(s1)), 뒤에서 부터 검색해야하므로 train.endsWith(s1).
두 번쨰 for문:
중복된 문자를 제거한다. s.indexOf(ch) 로 검색되는 값이 없다면, ch는 마지막으로 남은 문자이므로 t에 더한다.
References
최근 덧글