posts - 71,  comments - 41,  trackbacks - 0
加了对负数和溢出的处理,其他出错考虑较少,凑合看
 
#include <climits>
bool Str2Int(const char *s, int *result)
{
    
int
 digit;
    
*result = 0
;

    
bool isNeg = false
;
    
int i = 0
;
    
if (s[0== '-'
)
    
{
        isNeg 
= true
;
        i 
= 1
;
    }

    
    
while (s[i] >= '0' && s[i] <= '9')
    
{
        
if (*result <= (INT_MAX - (digit = s[i++- '0')) / 10
)
        
{
            
*result = 10 * (*result) +
 digit;    
        }
 
        
else

        
{
            
return false
;
        }

    }
//while
    
    
if (!s[i] && s[0
])
    
{
        
if
 (isNeg)
            
*result *= -1
;

        
return true
;
    }

    
else
    
{
        
return false
;
    }

}

混杂合法字串


#include <climits>
bool MixedStr2Int(const char *s, int *result)
{
    
int
 digit;
    
*result = 0
;


    
for (int i = 0; s[i] != '\0'; i++
)
    
{
        
if (s[i] > '0' && s[i] < '9'
)
        
{
            
if (*result <= (INT_MAX - (digit = s[i] - '0')) / 10
)
            
{
                
*result = 10 * (*result) +
 digit;    
            }
 
            
else

            
{
                
return false
;
            }

        }
 
        
    }
//for

    
return true;
}

bool  Int2Str( int  n,  char   * arr,  int  len)
{
    
int  start  =   0 , end  =   0 ;
    
bool  isNeg  =   false ;
    
if  (n  <   0 )
    
{
        n 
*=   - 1 ;
        isNeg 
=   true ;
    }


    
do  
    
{
        arr[end
++ =  n  %   10   +   ' 0 ' ;
        n 
/=   10 ;
        len
-- ;
        
    }
  while (n  &&  (len  >   0 ));

    
if  (len  <=   0 )
    
{
        
return   false ;
    }


    
if  (isNeg)
    
{
        
if  (len  >   1 )
        
{
            arr[end
++ =   ' - ' ;
            len
-- ;
        }

        
else
             
return   false ;
    }


    arr[end
-- =   ' \0 ' ;

    
while  (start  <  end)
    
{
        arr[start] 
^=  arr[end];
        arr[end] 
^=  arr[start];
        arr[start] 
^=  arr[end];

        start
++ ;
        end
-- ;
    }


    
return   true ;
}
posted on 2006-11-17 13:01 Charles 阅读(382) 评论(0)  编辑 收藏 引用 所属分类: 面试小算法

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2007年3月>
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

决定开始写工作日记,记录一下自己的轨迹...

常用链接

留言簿(4)

随笔分类(70)

随笔档案(71)

charles推荐访问

搜索

  •  

积分与排名

  • 积分 - 48101
  • 排名 - 455

最新评论

阅读排行榜

评论排行榜