看到你在Csdn上写的,看来不止是我觉得扩展01序列是一个不错的方法!~~
很庆幸
				
		 
	
		
			
			我也只是刚刚写的,遗漏之处和我说一下,谢谢了!
在我看来这个题目纯粹是一个计算的问题,不需要过多的循环的,当然 仅争对本题,另外解释一点,我上面的代码没有把负数考虑进去,只要稍微改进一下就可以把负数也包括进去,当然这点还需要商榷,我只是一个猜想,因为准备写代码的时候已经下班了,不想在公司继续熬了,所以代码写得很粗糙,没有优化,另外也没有过多检查BUG和遗漏的情况,往谅解下!
				
		 
	
		
			
			什么都不说  粗略写的java 代码 大家研究下
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
    /**
     * @param args
     */
    public static void main(String[] args)
    {
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	String numStr =null;
	long num = -1;
	long tempnum = 0;
	long bitvalue = -1;
	int numbit1 = -1;
	int numbit2 = -1;
	int flag = -1;
	int size = 0;
	boolean isrepeater = false;
	
	try
	{
	    numStr = br.readLine();
	    num = Long.parseLong(numStr);
	    
	} catch (NumberFormatException e)
	{
	   return;
	} catch (IOException e)
	{
	    return;
	}
	//只解析自然数
	if(num  <= -1)
	   return;
	
	size = (int)Math.log10(num);
	
	//1. 先将数字+1
	num ++;
	tempnum = num;
	
	//2. 判断是否为重复数字
	if(tempnum / Math.pow(10, size) >= 1)
	    size ++;
	
	bitvalue = (long)Math.pow(10, size - 1);
	
	for(flag = size - 1; flag >= 1; flag --){
	    
	    numbit1 = (int)(tempnum / bitvalue);
	    
	    tempnum = tempnum % bitvalue;
	    
	    bitvalue = (long)Math.pow(10, flag - 1);
	    numbit2 = (int)(tempnum / bitvalue);
	    
	    if(numbit1 == numbit2){
		isrepeater = true;
		break;
	    }
	}
	//2. 如果是重复数
	if(isrepeater){
	    flag --;
	    num -= tempnum % Math.pow(10, flag);
	    
	    //以下三行是由于考虑的遗漏,解决了以99开头数字(例 9998)的问题
	    //按照我以前的算法99123 得到的结果是100010
	    num += (long)Math.pow(10, flag);
	    if(Math.log10(num) >= size)
		num += (long)Math.pow(10, flag);
	    
	    flag -= 2;
	    for(; flag >= 0; flag -=2){
		num += (long)Math.pow(10, flag);
	    }
	}
	
	//4.输出结果
	System.out.println(num);
	
    }
}
				
		 
	
		
			
			额 我想你们理解错我的意思了
10^n 我表示的是10的n次方 
不好意思啊
				
		 
	
		
			re: SqlToolBox1.8.0版下载 Zhjiang 2010-05-13 14:39   
			我这里还是不行,也许是环境的问题,说说我的环境吧!
我的mysql是装在虚拟机上的,不是本机,有时候能执行但是反映速度相当的慢,好多时候按了很多下执行键都不起作用的,不知道是不是因为数据库不在本机的原因!~
				
		 
	
		
			re: SqlToolBox1.8.0版下载 Zhjiang 2010-05-13 11:17   
			貌似insert 和delete 有时候不起作用,我用的是mysql数据库,而且有时候能insert 进去但是没有任何消息说明insert成功了,很迷茫!~
				
		 
	
		
			
			这个题如果给我做的话我不会从左往右检查,相反我会从右往左检查
1.将数字+1
2. 从左往右(从高位到低位)判断是否有重复数字,没有的话进入4检查到第一组重复数字进入3
2. 将两个重复数字的以前的(包括重复数字取出来)并且+1,将结果*(10^n) + 01序列
3. 输出结果
例 21001224321
1.加1 = 21001224322
2. 是重复数字进入3
3. 2100 *10^7 + 1* 10^7 + 1* 10^5 + 1* 10^3 + 1* 10^1 = 
   21010101010
4. 输出 21010101010