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());
}
}
출처 프로그래머스