已知:1.1对应101
2.5对应205
10.1对应1001
10.10对应10010
10.100对应100100
100.10对应100010
。也就是说把小数点换成0形成一个字符串,现在需要反向操作,给一个字符串如"100100"要能正确解析为10.100,该怎么写啊?
(注:10.1和10.10等等并不是指小数,也是一个字符串,所以后面的0不能省略的)
2.5对应205
10.1对应1001
10.10对应10010
10.100对应100100
100.10对应100010
。也就是说把小数点换成0形成一个字符串,现在需要反向操作,给一个字符串如"100100"要能正确解析为10.100,该怎么写啊?
(注:10.1和10.10等等并不是指小数,也是一个字符串,所以后面的0不能省略的)
楼主【sixme】截止到2008-08-02 15:29:40的历史汇总数据(不包括此帖):
发帖的总数量:12 发帖的总分数:840 每贴平均分数:70
回帖的总数量:120 得分贴总数量:39 回帖的得分率:32%
结贴的总数量:11 结贴的总分数:740
无满意结贴数:1 无满意结贴分:50
未结的帖子数:1 未结的总分数:100
结贴的百分比:91.67 % 结分的百分比:88.10 %
无满意结贴率:9.09 % 无满意结分率:6.76 %
值得尊敬
取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=sixme
string[] a;
string[] b;
int size=a.length;
for i=size-1:0
if a[i] != 0
b[i] = ".";
else
b[i] = a[i];
end
end
public static void main (String args[]){
String str1 = "100100";
char[] charArray = str1.toCharArray();
for (int i=0; i<charArray.length-1; i++){
if ((charArray[i]=='0') && (charArray[i+1]!='0'))
charArray[i]='.';
}
System.out.print(new String(charArray));
}
}
10.100
但是遇到100100100就无语了 因为你还是不知道那个0是.变来的
public static void main (String args[]){
String str1 = "100100";
char[] charArray = str1.toCharArray();
for (int i=0; i<charArray.length-1; i++){
if ((charArray[i]=='0') && (charArray[i+1]!='0'))
charArray[i]='.';
}
System.out.print(new String(charArray));
}
}
10.100
不过遇到100100100就无语了
替换
str.replaceAll("(0[1-9])","\.$1");也就是把 0+任意一个数字 比如 01 02 03
替换为点加数字 .1 .2 .3
这样的话
100100100
= >
10 01 0 01 00
=》
10 ,1 0 ,1 00
=>
10.10.100
String r = str.replaceFirst("0([1-9])","\\.$1");
String r = str.replaceFirst("0([1-9])","\\.$1");
2.5对应205
10.1对应1001
10.10对应10010
10.100对应100100
100.10对应100010 那么就用HASHTABLE来做就行了,应该没有什么难的.如还不清楚,可以给我发邮件.
public static String revert(String dest){
StringBuffer sb = new StringBuffer(dest);
int index = dest.length()-1;
while(index>0){
if(sb.charAt(index--)=='0')continue;
while(sb.charAt(index)!='0')index--;
sb.replace(index, index+1, ".");
break;
}
return sb.toString();
}