题意:
一个01串S1,每位与邻数相加,得到新的串S2.
现在给你S2,求对应S1的一个字符分别为‘0’和‘1‘时S1是否存在
题解:
模拟,直接做就可以了
import java.util.*;
public class BinaryCode
{
String getStr(String str,int start)
{
char []s=str.toCharArray();
StringBuffer buf=new StringBuffer();
buf.append((char)(start+'0'));
int pre=start;
start=s[0]-'0'-start;
if(start!=0&&start!=1)
return "NONE";
for(int i=1;i<s.length;++i)
{
buf.append((char)(start+'0'));
s[i]-=(start+pre);
pre=start;
start=s[i]-'0';
if(start!=0&&start!=1)
return "NONE";
}
if(start!=0)
return "NONE";
return buf.toString();
}
public String [] decode(String s)
{
String []strs=new String[2];
strs[0]=getStr(s,0);
strs[1]=getStr(s,1);
return strs;
}
}

本文介绍了一种针对特定01串(S2)的解码算法,该算法能够找出对应的原始01串(S1)。通过模拟计算过程,判断并构造出原始字符串S1是否存在且唯一,对于每个字符位置分别尝试0和1两种情况。

2万+

被折叠的 条评论
为什么被折叠?



