• TopCoder SRM144 DIV1(one)


     1 import java.util.Scanner;
     2 
     3 public class BinaryCode {
     4     
     5     public String[] decode(String message){
     6         String[] original =  new String[2];
     7         StringBuffer s1=new StringBuffer();
     8         StringBuffer s2=new StringBuffer();
     9         
    10         int flag1=0,flag2=0;
    11         char temp;
    12         
    13         for(int i=1;i<message.length();i++){
    14             if(i==1)
    15             {
    16                 if(flag1==0)
    17                 {
    18                     s1.insert(0, '0');
    19                     temp = (char) (message.charAt(0)-s1.charAt(0)+'0');
    20                     if(temp!='0'&&temp!='1')
    21                         flag1=1;
    22                     s1.insert(1,temp);
    23                 }
    24                 
    25                 if(flag2==0)
    26                 {
    27                     s2.insert(0, '1');
    28                     temp = (char) (message.charAt(0)-s2.charAt(0)+'0');
    29                     if(temp!='0'&&temp!='1')
    30                         flag2=1;
    31                     s2.insert(1, temp);
    32                 }
    33             }
    34             else{
    35                 
    36                 if(flag1==0)
    37                 {
    38                     temp = (char) (message.charAt(i-1)-s1.charAt(i-1)+'0'-s1.charAt(i-2)+'0');
    39                     if(temp!='0'&&temp!='1')
    40                         flag1=1;
    41                     s1.insert(i,temp);
    42                 }
    43                 
    44                 if(flag2==0)
    45                 {
    46                     temp = (char) ((message.charAt(i-1)-'0')-(s2.charAt(i-1)-'0')-(s2.charAt(i-2)-'0')+'0');
    47                     if(temp!='0'&&temp!='1')
    48                         flag2=1;
    49                     s2.append(temp);
    50                 }
    51             }
    52             
    53             if(flag1==1&&flag2==1){
    54                 break;
    55             }
    56             //System.out.println(i+1+":"+s1+","+s2);
    57         }
    58         
    59         if(flag1==0)
    60             if(message.charAt(message.length()-1)!=s1.charAt(message.length()-1)+s1.charAt(message.length()-2)-'0')
    61                 flag1=1;
    62         if(flag2==0)
    63             if(message.charAt(message.length()-1)!=s2.charAt(message.length()-1)+s2.charAt(message.length()-2)-'0')
    64                 flag2=1;
    65             
    66         if(flag1==1)
    67             original[0]="NONE";
    68         else
    69             original[0]=s1.toString();
    70         
    71         if(flag2==1)
    72             original[1]="NONE";
    73         else
    74             original[1]=s2.toString();
    75             
    76         
    77         
    78         return original;
    79     }
    80 
    81     /**
    82      * @param args
    83      */
    84     public static void main(String[] args) {
    85         // TODO Auto-generated method stub
    86         
    87         BinaryCode bc=new BinaryCode();
    88         Scanner cin=new Scanner(System.in);
    89         while(cin.hasNext()){
    90             String[] res=bc.decode(cin.next());
    91                 System.out.println("{"+res[0]+","+res[1]+"}");
    92         }
    93     }
    94 }
    ==================================================

    作者: Panderen

    博客: http://panderen.cnblogs.com

    签名: 机会总是为有准备的人而准备的!

  • 相关阅读:
    Android HandlerThread
    JavaScript数据类型
    Android:VideoView
    我是如何跟踪log4j漏洞原理及发现绕WAF的tips
    Dubbo的反序列化安全问题——kryo和fst
    使用移动硬盘快速安装win7(附BIOS设置)
    OpenStack Swift All In One安装部署流程与简单使用
    C语言浮点数运算
    使用注册表文件(REG)添加、修改或删除Windows注册表项和值
    Linux之TCPIP内核参数优化
  • 原文地址:https://www.cnblogs.com/panderen/p/2470907.html
Copyright © 2020-2023  润新知