내가 Hackerrank에 문자열 문제를 해결하기 위해 작은 Java 클래스를 구현했다 : 유효한 하나를 고려, 자사의 환원성 양식을 찾을 문자열을 감안할 때자바 - 문자열 java.lang.OutOfMemoryError와 : Java 힙 공간
을 연산은 같은 값을 가진 인접한 문자 쌍을 삭제하는 것입니다.
예는 :
"aabcc" would become either "aab" or "bcc" after 1 operation.
하지만, 난 그냥이 오류를 둘러싼 코드 블록에 대해 언급하고자합니다. 내가 꽤 잘 문제를 해결할 수 있었지만, 나는 의 StringBuilder()
의 더 나은 방법을 사용하여 솔루션의 시간 성능을 향상시키기 위해 다른 사람에 의해 유혹하고있어하지만 난 알아 냈하지 않은 이유 의 동작 append() 내 StringBuilder 클래스 메모리 오버플로 또는 어떤 종류의 더 복잡한 misbehavior 발생할 수 있습니다.
static String super_reduced_string(String s){
StringBuilder res = new StringBuilder();
for (int i = 1; i < s.length(); i++){
if (s.charAt(i-1) == s.charAt(i)){
/* waste so much memory leak!!! java.lang.OutOfMemoryError: Java heap space
//s = res.append(s.substring(0, i-1)).append(s.substring(i+1)).toString();
*/
s = s.substring(0, i-1) + s.substring(i+1);
i = 0;
}
}
//then check if it's non-empty, print it out
if (s.length() != 0){
return s;
}
return "Empty String";
}
내가 주석 부분은 위에서 언급 한 잘못된 행동입니다 :
여기에 코드입니다. 제발이 버그를 통해 추론하고 디버깅 해주세요! 그렇게 힘들어서는 안됩니다.