코딩테스트 풀이/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) s는 a와 b로 이루어져 있다.
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번보다 훨씬 좋은 성능을 보여줬다.