当前位置: 代码迷 >> Java相关 >> [求助]求助朋友们
  详细解决方案

[求助]求助朋友们

热度:352   发布时间:2007-09-10 20:01:28.0
[求助]求助朋友们

有一个用户用网络传输文本数据,为了加快数据传输速度,他希望减少网络传输的数据量,
因此在传输之前他先将文本数据编码,等到接受到文本数据后再进行解码,考虑到他传输
的文本只由小写字母构成('a'-'z'),编码算法如下,比如文本ssssddasss,变成4s2da3s,
也就是将连续出现的字母由数字加字母表示,比如ssssddasss中ssss表示为4s(不要表示为04s),
如果文本中的字母为单个字母,比如ssssddasss中的a,则表示为a,不要表示为1a。解码的算法就是
将4s2da3s展开成编码前的字符串,即ssssddasss.

编写编码和解码的方法,

类名TextEncoder

编码的方法名:public String encode(String text)

编码的方法输入数据的约束条件:(text只由'a'-'z'构成,text长度不超过150);

解码的方法名:public String decode(String text)

解码的方法输入数据的约束条件:
(text只由'a'-'z'构成及数字构成,text最后的字符必定为字母,text不存在连续字母出现,
比如4ss是不会出现的,正确的是5s,由text解码展开的字符串长度不会超过150);

搜索更多相关的解决方案: 朋友  

----------------解决方案--------------------------------------------------------
class TextEncoder
{
public String encode(String text){
char ch;
int count=1;
StringBuffer str = new StringBuffer();
for(int i=0; i<text.length(); i++){
ch = text.charAt(i);
for(i=i+1; i<text.length(); i++){
if(ch == text.charAt(i))
count++;
else{
i--;
break;
}
}
if(count == 1)
str.append(ch);
else
str.append(count).append(ch);
count=1;
}
return str.toString();
}
public static void main(String[] args)
{
String ddd="jfasjjjdfjssssj";
TextEncoder d = new TextEncoder();
System.out.println(d.encode(ddd));
}
}


只写了一个编码的函数,你自己按照上面的写解码的吧,要自己学着编才能进步啊
数据的约束条件可以用正则表达式来约束就行了,很简单的
----------------解决方案--------------------------------------------------------

太感谢了!我去试试!希望还能看到更有粒度的解答方法!


----------------解决方案--------------------------------------------------------
  相关解决方案