Java/Java 프로그래머스

A로B만들기( A String의 순서만변경해서 B String을 만들수있는지

MDanderson 2022. 11. 15. 16:58

문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 0 < before의 길이 == after의 길이 < 1,000
  • before와 after는 모두 소문자로 이루어져 있습니다.

입출력 예

beforeafterresult

"olleh" "hello" 1
"allpe" "apple" 0

입출력 예 설명

입출력 예 #1

  • "olleh"의 순서를 바꾸면 "hello"를 만들 수 있습니다.

입출력 예 #2

  • "allpe"의 순서를 바꿔도 "apple"을 만들 수 없습니다.
import java.util.Arrays;
class Solution {
    public int solution(String before, String after) {
        char[] a = before.toCharArray();
        char[] b = after.toCharArray();
        Arrays.sort(a);
        Arrays.sort(b);

        return new String(a).equals(new String(b)) ? 1 :0;
    }
}
class Solution {
    public int solution(String before, String after) {
        int answer = 1;

        for(int i =0; i<after.length(); i++){
            String ch = String.valueOf(after.charAt(i));

            if(before.contains(ch)) {
               before = before.replaceFirst(ch,""); 
            }else return 0;
        }

        return answer;
    }
}
import java.util.*;
import java.util.stream.Collectors;

class Solution {
    public int solution(String before, String after) {
        return isCheck(getList(before), getList(after)) ? 1 : 0;
    }

    private boolean isCheck(List<Integer> first, List<Integer> second) {
        for (int i = 0; i < first.size(); i++) {
            if (first.get(i) != second.get(i)) {
                return false;
            }
        }
        return true;
    }

    private List<Integer> getList(String str) {
        return Arrays.stream(str.split(""))
                .collect(Collectors.groupingBy(s -> s))
                .values()
                .stream()
                .map(List::size)
                .collect(Collectors.toList());
    }
}

출처 프로그래머스

댓글수0