Algorithm

코딩인터뷰 완전분석 - 1

kjy0349 2021. 2. 18. 20:32

아이패드를 가지고 나오지 않은 관계로 공책에 손코딩을 한 날이다.

배열과 문자열

1.1 문제
1.2 문제 

 

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로 복사해나가는 방식으로 변환했다.