BinaryGap
Find longest sequence of zeros in binary representation of an integer.
이진법으로 변환 후 1과 1사이의 0의 값을 추출한다.
내가 푼 방법
public static int solution(int N) {
// write your code in Java SE 8
String binary = Integer.toBinaryString(N);
List<Integer> aArray = new ArrayList();
int result = 0;
for (int i = 0; i < binary.length(); i++) {
if(binary.charAt(i) == '1') {
aArray.add(i);
}
}
int max = 0;
int val = 0;
for (int i = 0; i < aArray.size() -1; i++) {
if(i == 0) {
max = binary.substring(aArray.get(i), aArray.get(i+1)).length() -1;
}else {
val = binary.substring(aArray.get(i), aArray.get(i+1)).length() -1;
}
if(i > 0) {
max = Integer.max(max, val);
}
}
if(aArray.size() < 2) {
max = 0;
}
return max;
}
-> 다른 사람이 푼 코드
class Solution {
public int solution(int N) {
// write your code in Java SE 8
String binaryNum = Integer.toBinaryString(N);
int temp = 0;
int maxLen = temp;
for(int i=1; i< binaryNum.length(); i++){
if(binaryNum.charAt(i) == '0') temp++;
else{
maxLen = Math.max(maxLen, temp);
temp = 0;
}
}
return maxLen;
}
}
개깔끔.. 왜 저생각을 못했지.. 분발하자!
SWIFT 버전
public func solution(_ N: Int) ->Int{
var result = 0
let binary = String(N, radix: 2, uppercase: true)
var tmp = 0;
for char in binary {
if char == "0"{
tmp += 1
}else{
result = max(result, tmp)
tmp = 0
}
}
return result
}
댓글 없음:
댓글 쓰기