forked from charles-wangkai/old_topcoder
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBinaryCode.java
More file actions
28 lines (28 loc) · 797 Bytes
/
BinaryCode.java
File metadata and controls
28 lines (28 loc) · 797 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class BinaryCode {
public String[] decode(String message) {
String results[]=new String[2];
int length=message.length();
int digits[]=new int[length];
for (int i=0;i<2;i++) {
digits[0]=i;
results[i]=digits[0]+"";
for (int j=1;j<length;j++) {
if (j==1) {
digits[j]=message.charAt(j-1)-'0'-digits[j-1];
}
else {
digits[j]=message.charAt(j-1)-'0'-digits[j-1]-digits[j-2];
}
if (digits[j]!=0 && digits[j]!=1) {
results[i]="NONE";
break;
}
results[i]+=digits[j];
}
if (!results[i].equals("NONE") && ((length==1 && digits[0]!=message.charAt(length-1)-'0') || (length>1 && digits[length-2]+digits[length-1]!=message.charAt(length-1)-'0'))) {
results[i]="NONE";
}
}
return results;
}
}