CodeWars 일백 열 두 번째 문제
Updated:
Playing with passphrases
public static String playPass(String s, int n) {
char[] sArray = s.toCharArray();
String allLetter = "[a-zA-Z]";
String lowerLetter = "[a-z]";
String upperLetter = "[a-z]";
String numberRegex = "[0-9]";
for(int i = 0; i < sArray.length; i++) {
String letter = s.substring(i, i+1);
if(letter.matches(lowerLetter)) {
sArray[i] = (char) ('a' + (sArray[i] - 'a' + n) % 26);
}
if(letter.matches(upperLetter)) {
sArray[i] = (char) ('A' + (sArray[i] - 'A' + n) % 26);
}
if(letter.matches(numberRegex)) {
sArray[i] = (char) ('9' - sArray[i] + '0');
}
if(i % 2 == 1 && letter.matches(allLetter)) {
sArray[i] = String.valueOf(sArray[i]).toLowerCase().charAt(0);
}
}
return new StringBuilder(String.valueOf(sArray)).reverse().toString();
}
- 정규식으로 깔끔하게 정리되었다.
- 문제는 어렵지 않다.