코린이의 소소한 공부노트

[LeetCode/Easy] 2124. Check if All A's Appears Before All B's 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2124. Check if All A's Appears Before All B's

무지맘 2023. 1. 13. 19:01

1. Input

1) 문자열 s

 

2. Output

1) s에 있는 모든 a가 모든 b보다 앞에 위치하면 true, 하나라도 b보다 뒤에 있으면 false를 반환

 

3. Constraint

1) 1 <= s.length <= 100

2) sab로 이루어져 있다.

 

4. Example

Input: s = "aaabbb" -> Output: true

Input: s = "abab" -> Output: false

 

5. Code

1) 첫 코드(2022/06/18)

int ai = -1;
int bi = -1;
boolean notFindB = true;
boolean notFindA = true;
int len = s.length();

for(int i=0 ; i<len ; i++){
    if(s.charAt(i) == 'b' && notFindB){
        bi = i;
        notFindB = false;
    }
    if(s.charAt(len-1-i) == 'a' && notFindA){
        ai = len-1-i;
        notFindA = false;
    }
}

if(ai == -1 || bi == -1)
    return true;

return ai<bi;

2) 다시 풀어본 코드(2023/01/13)

int ai = -1, bi = -1;

for(int i=s.length()-1 ; i>=0 ; i--){
    if(s.charAt(i)=='a'){
        ai = i; break;
    }
} // find last a

for(int i=ai-1 ; i>=0 ; i--){
    if(s.charAt(i)=='b'){
        bi = i; break;
    }
} // find b in front of a

return bi==-1 || ai==-1 || ai<bi;

- 1번보다 훨씬 좋은 성능을 보여줬다.