본문 바로가기
Java/알고리즘

문자열중 특정문자로 시작해 특정문자로 끝나는지 찾아용

by 티코딩 2022. 11. 25.

문자열을 입력받아 문자열 내에 아래 중 하나가 존재하는지 여부를 리턴해야 합니다.

  1. 'a'로 시작해서 'b'로 끝나는 길이 5의 문자열
  2. '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);