剑指Offer - 九度1508 - 把字符串转换成整数
2014-02-06 23:46
题目描述:

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。

输入:

输入可能包含多个测试样例。
对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1<= n<=10000000)。

输出:

对应每个测试案例,
若输入为一个合法的字符串(即代表一个整数),则输出这个整数。
若输入为一个非法的字符串,则输出“My God”。

样例输入:
5
-5
+8
样例输出:
5
-5
8
题意分析:
  给定一个字符串,判断是否表示一个有效的整数。注意以下几点即可:
    1. 判断非法字符,只有数字和
    2. 正负号只能出现在第一位,也不能多次出现。
    3. 数字范围得控制,超出了INT_MIN或是INT_MAX的话得判定为非法。
  时间复杂度为O(n),n为字符串长度,空间复杂度O(1)。
 // 688177    zhuli19901106    1508    Accepted    点击此处查看所有case的执行结果    1020KB    1323B    0MS
//
#include <climits>
#include <cstdio>
#include <cstring>
using namespace std; int main()
{
int i;
char s[];
int len;
long long int n;
int flag;
bool suc; // don't use "while (gets(s) != NULL)"!
while (scanf("%s", s) == ) {
len = strlen(s);
suc = true;
do {
if (len <= ) {
suc = false;
break;
} if (len == && (s[] == '+' || s[] == '-')) {
suc = false;
break;
} for (i = ; i < len; ++i) {
if (s[i] == '-' || s[i] == '+') {
if (i != ) {
suc = false;
break;
}
} else if (!(s[i] >= '' && s[i] <= '')) {
suc = false;
break;
}
}
if (!suc) {
break;
}
if (s[] == '-') {
flag = -;
n = ;
} else if(s[] == '+') {
flag = +;
n = ;
} else {
flag = +;
n = (s[] - '');
}
for (i = ; i < len; ++i) {
n = n * + (s[i] - '');
if (n > ) {
suc = false;
break;
}
}
n = n * flag;
if (n == ) {
suc = false;
break;
}
} while ();
if (suc) {
printf("%lld\n", n);
} else {
printf("My God\n");
}
} return ;
}

剑指Offer - 九度1508 - 把字符串转换成整数的更多相关文章

  1. 剑指offer(49)把字符串转换成整数。

    题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法 ...

  2. 【剑指Offer】49、把字符串转换成整数

      题目描述:   将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字 ...

  3. 剑指Offer - 九度1369 - 字符串的排列

    剑指Offer - 九度1369 - 字符串的排列2014-02-05 21:12 题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所 ...

  4. 剑指Offer - 九度1362 - 左旋转字符串(Move!Move!!Move!!!)

    剑指Offer - 九度1362 - 左旋转字符串(Move!Move!!Move!!!)2013-11-23 03:05 题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任 ...

  5. 剑指Offer - 九度1510 - 替换空格

    剑指Offer - 九度1510 - 替换空格2013-11-29 20:53 题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之 ...

  6. 剑指Offer - 九度1283 - 第一个只出现一次的字符

    剑指Offer - 九度1283 - 第一个只出现一次的字符2013-11-21 21:13 题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出 ...

  7. 剑指Offer - 九度1524 - 复杂链表的复制

    剑指Offer - 九度1524 - 复杂链表的复制2014-02-07 01:30 题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点 ...

  8. 剑指Offer - 九度1509 - 树中两个结点的最低公共祖先

    剑指Offer - 九度1509 - 树中两个结点的最低公共祖先2014-02-07 01:04 题目描述: 给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先. 输入: 输入可能包含多个测试样 ...

  9. 剑指Offer - 九度1504 - 把数组排成最小的数

    剑指Offer - 九度1504 - 把数组排成最小的数2014-02-06 00:19 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输 ...

随机推荐

  1. 关于 IntelliJ IDEA 的Maven 版本修改

    Project Structure->Project里Project sdk以及project language level Project Structure->Modules里Sour ...

  2. 关于硬盘分区使用exFat格式的优势及劣势(含摘抄)

    优势 可以设置最大32M的簇: 不记录日志. 劣势 无法使用windows的“文件共享”: 通过近期某个文件数量密级任务的测试发现,在大量文件的处理性能上,NTFS比exFAT文件系统的性能高出不少. ...

  3. 228. Summary Ranges (everyday promlems) broken problems

    Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...

  4. POJ-3111 K Best---二分求最大化平均值

    题目链接: https://cn.vjudge.net/problem/POJ-3111 题目大意: 卖宝救夫:Demy要卖珠宝,n件分别价值vi 重 wi,她希望保留k件使得 最大. 解题思路: # ...

  5. 2017.10.26 JavaWeb----第五章 JavaBean技术

    JavaWeb----第五章 JavaBean技术 (1)JavaBean技术 JavaBean技术是javaweb程序的重要组成部分,是一个可重复使用的软件组件,是用Java语言编写的.遵循一定的标 ...

  6. OnCollisionEnter和OnTriggerEnter

    之前对这两个的用法不是特别清楚,重新学习了下,再做个测试看看效果如何: 1.新建一个场景test 2.添加一个cube,点击Inspector面板会发现系统已经默认添加了Box collisder组件 ...

  7. logistic regression (逻辑回归) 概述

    :http://hi.baidu.com/hehehehello/blog/item/0b59cd803bf15ece9023d96e.html#send http://en.wikipedia.or ...

  8. springmvc中校验框架(hibernate)

    JSR303定义的校验类型 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibe ...

  9. js 实现链表

    我们通常会在c++这类语言中学习到链表的概念,但是在js中由于我们可以动态的扩充数组,加之有丰富的原生api.我们通常并不需要实现链表结构.由于突发奇想,我打算用js实现一下: 首先我们要创建链表: ...

  10. python显示灰度图

    import matplotlib import matplotlib.pyplot as plt %matplotlib inline im=plt.imread('../lena.jpg', py ...