ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 코딩인터뷰 완전분석 - 1
    Algorithm 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로 복사해나가는 방식으로 변환했다.

Designed by Tistory.