문자열을 입력받아 문자열 내에 아래 중 하나가 존재하는지 여부를 리턴해야 합니다.
- 'a'로 시작해서 'b'로 끝나는 길이 5의 문자열
- 'b'로 시작해서 'a'로 끝나는 길이 5의 문자열
//
//
//
//
//
처음 작성한 코드는
boolean answer = false;
String str = "eiaoalskdfn";
String str1 = str.toLowerCase(); //그냥 str.toLowerCase();는 적용이안된다. 새로운 변수에 할당해줘야 한다.
for (int i = 0; i < str1.length(); i++) {
if (str1.charAt(i) == 'a' && str1.charAt(i + 4) == 'b') {
answer = true;
break;
}
else if (str1.charAt(i) == 'b' && str1.charAt(i + 4) == 'a') {
answer = true;
break;
}
}
System.out.println(answer);
IDE에서는 결과 잘 나오길래 쉽구만ㅋ 했는데 테스트에서 실패했다.
'TgDrnjAz6kAbdEaxFkrKIsa'을(를) 입력받은 경우, false를 리턴해야 합니다. 이 테스트에서 예외가 발생했다. 왤까?
java.lang.StringIndexOutOfBoundsException
다시 생각해보니 i + 4 했을 때, str1 의 길이보다 넘을 수 있기 때문이었다. 어떻게 안넘게 할까? 그냥 예외처리를 해버렸더니 됐다!
쏘 씸플!이지!
boolean answer = false;
String str = "aaaaaccccbbbbb";
String str1 = str.toLowerCase(); //그냥 str.toLowerCase();는 적용이안된다. 새로운 변수에 할당해줘야 한다.
try {
for (int i = 0; i < str1.length(); i++) {
if (str1.charAt(i) == 'a' && str1.charAt(i + 4) == 'b') {
answer = true;
break;
} else if (str1.charAt(i) == 'b' && str1.charAt(i + 4) == 'a') {
answer = true;
break;
}
}
}catch (StringIndexOutOfBoundsException e){
}
System.out.println(answer);
'Java > 알고리즘' 카테고리의 다른 글
문자열배열 세로로 읽어버리기 (0) | 2022.12.05 |
---|---|
문자열사이에 '-' 삽입하자! (홀수사이에만!) (0) | 2022.11.26 |
2차원배열을 HashMap으로 / [구현]보드게임 (0) | 2022.11.25 |
안반잘다만 - String 슬라이싱 후 앞글자만 모으기 (0) | 2022.11.22 |
원금이 두배가 돼 두 두배 두배 (1) | 2022.11.19 |