posts - 71,  comments - 39,  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 阅读(219) 评论(0)  编辑 收藏 引用 所属分类: 面试小算法

专题:Android  iPad jQuery Chrome OS

博客园首页  IT新闻  知识库  学英语  C++程序员招聘
标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
每天10分钟,轻松学英语
网站导航:


<2006年11月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

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

常用链接

留言簿(3)

随笔分类(70)

随笔档案(71)

相册

charles推荐访问

搜索

  •  

积分与排名

  • 积分 - 23611
  • 排名 - 185

最新评论

  • 1. re: 数单词数
  • 规范化;门口麻烦机;那么孔方兄那么妈妈法;酿母菌法那么;风格那么明年;愤怒麻烦那么愤怒愤怒留念多孔蕈乐观好看的里边赶快巴拿马城,新年巴拿马国际法,不
  • --申诉台
  • 2. re: 数单词数
  • 感到发现看来自动化大会单行本打开怎么赶快电子管矛盾感动不动门口‘大批看病黄道婆民主
  • --申诉台
  • 3. re: 移除字符
  • 评论内容较长,点击标题查看
  • --D_BOY
  • 4. re: 很土
  • 呵呵,慢慢来就好嘛
  • --flamingo
  • 5. re: 毕业啦
  • 评论内容较长,点击标题查看
  • --moonlight

阅读排行榜

评论排行榜