Algorithm
코딩인터뷰 완전분석 - 1
kjy0349
2021. 2. 18. 20:32
아이패드를 가지고 나오지 않은 관계로 공책에 손코딩을 한 날이다.
배열과 문자열


1.1 중복이 없는가
package arrayandString_1;
import java.util.ArrayList;
public class ArrayandString_1 {
ArrayList<String> merge(String[] words, String[] more) {
ArrayList<String> sentence = new ArrayList<String>();
for(String w: words)sentence.add(w);
for(String w: more)sentence.add(w);
return sentence;
}
boolean isdup(String str) {
for(int i=0;i<str.length()-1;i++) {
if(str.charAt(i) == str.charAt(i+1)) return true;
}
return false;
}
public static void main(String[] args) {
ArrayandString_1 m = new ArrayandString_1();
String str = "abcdef";
System.out.println(m.isdup(str));
}
}
위의 merge 메소드는 가변 길이 배열 연습용으로 만든 메소드로, 해당 문제와는 관련이 없다.
Point. Java에서 String 객체의 인덱스 접근은 charAt(index) 메소드를 사용한다.
1.2 순열 확인
package arrayandString_2;
public class Permutation {
boolean isPermutation(String first, String second) {
Permutation p = new Permutation();
if(first.length() == second.length()) {
return p.sortString(first).equals(p.sortString(second));
}
else {
return false;
}
}
String sortString(String str) {
char[] arraychar = str.toCharArray();
java.util.Arrays.sort(arraychar);
return new String(arraychar);
}
public static void main(String[] args) {
Permutation p = new Permutation();
String first = "abcdef";
String second = "badffc";
System.out.println(p.isPermutation(first, second));
}
}
Point. 문자열을 정렬 할 때에는, java.util.Arrays 클래스에 있는 sort 메소드를 활용하자.
String을 toCharArray() 메소드를 이용해 char형 배열로 만든 후, sort 메소드를 이용해 정렬해준다.
정렬된 char형 배열을 new String(arraychar)와 같은 형태로 다시 String으로 만든 후 반환해준다.
1.3 URL화
package arrayandString_3;
public class Space {
String toSpace(char[] array,int finlength) {
int realindex = 0;//array의 index
char[] chararray = new char[finlength];
for(int i=0;i<chararray.length;i++) {//i는 chararray의 index
if(array[realindex] == ' ') {
chararray[i] = '%';
chararray[i+1] = '2';
chararray[i+2] = '0';
}
else {
chararray[i] = array[i];
}
realindex++;
}
return new String(chararray);
}
public static void main(String[] args) {
Space s = new Space();
String str = "Mr John Smith ";
char[] chararray = str.toCharArray();
System.out.println(s.toSpace(chararray, 13));
}
}
해당 문제는 손코딩으로하지 않아서 사진이 없다. 책에서는 뒤에서부터 변환을 시작했지만, 나는 index를 2개를 써서 array에 있는 원본 코드를 하나씩 chararray로 복사해나가는 방식으로 변환했다.