다음 문자열 "áe"를 되돌리고 싶다고합시다.반전 된 문자열을 얻는 방법 (유니 코드 안전)
그 유니 코드는 "\ u0061 \ u0301 \ u0065"입니다.
를 되 돌리는의 순진 aproach는 문자로 숯불 될 것이다 "EA를"(\ u0065 \ u0301 \ u0061) 우리가 얻을 수 있도록 노력하겠습니다 때 "EA"(\ u0065 \ u0061 \ 우리를 제공
private static String reverseStringNaive(String s) {
char[] characters = new char[s.length()];
for (int i = s.length() - 1; i >= 0; i--) {
int j = s.length() - i - 1;
characters[j] = s.charAt(i);
}
return new String(characters);
}
u0301). 악센트 " '"는 "a"와 함께 붙어야하며 "e"로 변경하면 안됩니다. 각 문자는 문자, 숫자 또는 ISO 컨트롤의 경우 내가 확인하고 있습니다
private static String reverseString(String s) {
char[] characters = new char[s.length()];
for (int i = s.length() - 1; i >= 0; i--) {
int j = s.length() - i - 1;
if (Character.isLetterOrDigit(s.charAt(i)) || Character.isISOControl(s.charAt(i))) {
characters[j] = s.charAt(i);
} else {
characters[j] = s.charAt(i-1);
characters[j+1] = s.charAt(i);
i--;
}
}
return new String(characters);
}
:
다음 코드는 나에게 그 문자열에 대한 예상 결과를 제공합니다. 그렇지 않다면 나는 이전 캐릭터와 함께해야한다고 가정하고 있습니다.
질문은 내가 확인하거나 걱정해야 할 다른 것이 있습니까? 내 관심사는 아직도 순진하고 있습니까?
http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html#reverse(java.lang.String)은 어떤가요? –
그것은 순진한 접근을합니다. 잘못된 결과를줍니다. – pablosaraiva
javadoc에 따르면,이 클래스는'StringBuffer.reverse()'를 사용합니다.이 함수는 http://download.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuffer.html#reverse () –