剑指Offer - 九度1508 - 把字符串转换成整数
剑指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 - 把字符串转换成整数的更多相关文章
- 剑指offer(49)把字符串转换成整数。
题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法 ...
- 【剑指Offer】49、把字符串转换成整数
题目描述: 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字 ...
- 剑指Offer - 九度1369 - 字符串的排列
剑指Offer - 九度1369 - 字符串的排列2014-02-05 21:12 题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所 ...
- 剑指Offer - 九度1362 - 左旋转字符串(Move!Move!!Move!!!)
剑指Offer - 九度1362 - 左旋转字符串(Move!Move!!Move!!!)2013-11-23 03:05 题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任 ...
- 剑指Offer - 九度1510 - 替换空格
剑指Offer - 九度1510 - 替换空格2013-11-29 20:53 题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之 ...
- 剑指Offer - 九度1283 - 第一个只出现一次的字符
剑指Offer - 九度1283 - 第一个只出现一次的字符2013-11-21 21:13 题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出 ...
- 剑指Offer - 九度1524 - 复杂链表的复制
剑指Offer - 九度1524 - 复杂链表的复制2014-02-07 01:30 题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点 ...
- 剑指Offer - 九度1509 - 树中两个结点的最低公共祖先
剑指Offer - 九度1509 - 树中两个结点的最低公共祖先2014-02-07 01:04 题目描述: 给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先. 输入: 输入可能包含多个测试样 ...
- 剑指Offer - 九度1504 - 把数组排成最小的数
剑指Offer - 九度1504 - 把数组排成最小的数2014-02-06 00:19 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输 ...
随机推荐
- jquery中$.ajax()方法使用详解
1.url 说明:发送请求的地址(默认为当前页面),要求是String类型的参数,比如是.net下,"~wexin(控制器)/getweinxinmenu(动作)", 2.type ...
- ModuleNotFoundError: No module named 'yaml'
ModuleNotFoundError: No module named 'yaml' 需要安装 pyyaml 包
- April 16 2017 Week 16 Sunday
Happiness is a way station between too much and too little. 幸福就是刚刚好. I don't want to talk about it a ...
- 译:Local Spectral Graph Convolution for Point Set Feature Learning-用于点集特征学习的局部谱图卷积
标题:Local Spectral Graph Convolution for Point Set Feature Learning 作者:Chu Wang, Babak Samari, Kaleem ...
- java集合框架——工具类
一.概述 JAVA集合框架中有两个很重要的工具类,一个是Collections,另一个是Arrays.分别封装了对集合的操作方法和对数组的操作方法,这些操作方法使得程序员的开发更加高效. public ...
- now()与sysdate()的区别(1)
now()与sysdate()两个函数都以'YYYY-MM-DD HH:MM:SS'的形式表示表示当前的时间.比如: root@rac1 21:13:10> select sysdate ...
- maven解析xml+测试test+注解
条件:maven项目 测试图: 创建maven项目,在maven项目中scr目录下有main.test(没有就创建) 一.解析XML文件方式 在main目录下有java.resources.webap ...
- 前端jQuery之属性操作
属性操作主要分为四个部分:html属性操作,dom属性操作,类样式操作和值操作 HTML属性操作:属性的读取,设置,以及移除,如attr().removeAttr() DOM属性操作:属性的读取,设置 ...
- Linux下文件的压缩与解压缩
一.zip格式 zip可能是目前使用的最多的文档压缩格式.它最大的优点就是在不同的操作系统平台上使用.缺点就是支持 的压缩率不是很高,而tar.gz和tar.bz2在压缩率方面做得非常好. 我们可以使 ...
- Windows的cmd命令查询指定端口占用的进程并关闭
以端口8080为例: 1.查找对应的端口占用的进程:netstat -aon|findstr "8080" ,找到占用8080端口对应的程序的PID号: 2.根据PID号 ...