본문 바로가기

자바

문자열 내림차순으로 배치하기

반응형


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package javaalgorithm;
 
public class ReverseStr {
    public String reverseStr(String str){
        int l = str.length();
        Character[] s = new Character[l];
        StringBuffer sb = new StringBuffer();
        
        for(int i=0;i<l;i++){
            s[i] = str.charAt(i);
        }
        
        while(l>0){
            for(int i=0;i<l-1;i++){
                if(s[i]<s[i+1]){
                    char temp = s[i];
                    s[i] = s[i+1];
                    s[i+1= temp;
                }
            }
            l--;
        }
        
        for(int i=0;i<s.length;i++){
            sb.append(s[i].toString());
        }
    
        return sb.toString();
    }
 
    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void main(String[] args) {
        ReverseStr rs = new ReverseStr();
        System.out.println( rs.reverseStr("Zbcdefg") );
    }
}
 
cs

처음 푼 방식은 character형 배열인 s를 str의 길이만큼의 크기를 주고 만들어서 받은 str을 죄다 character형으로 바꾸어 s에 저장한다.
그리고 버블정렬을 사용하여 s에 있는 값들을 크기 순으로 정렬해 주고 마지막에 StringBuffer sb에다가 s값들을 toString을 이용하여 String값들로 바꿔준 다음 append시키는 방법을 썼다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package javaalgorithm;
 
import java.util.Arrays;
 
public class ReverseStr1 {
    public String reverseStr(String str){
        int l = str.length();
        char[] s = str.toCharArray();
        StringBuffer sb = new StringBuffer();
        
        Arrays.sort(s);
        
        for(int i=0;i<s.length;i++){
            sb.append(s[i]);
        }
    
        return sb.toString();
    }
 
    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void main(String[] args) {
        ReverseStr rs = new ReverseStr();
        System.out.println( rs.reverseStr("Zbcdefg") );
    }
}
cs


다른 풀이 방법으로는 str.toCharArray()라는 함수를 이용해서 char배열에 바꾸어 넣어주는 방법이 있다. 
그리고 Arrays에서 지원해주는 sort()함수를 이용하여 크기순으로 정렬하고 StringBuffer sb에 s값을 append하는 방법이다.


'자바' 카테고리의 다른 글

가운데 글자 가져오기  (0) 2016.11.17
시저암호  (0) 2016.11.17
나누어 떨어지는 숫자배열  (0) 2016.11.14
삼각형 출력하기  (0) 2016.11.14
String으로 입력받은 값의 최대,최소 구하는 문제  (0) 2016.11.13