把字符串转换成整数与不要二
⭐️把字符串转换成整数⭐️
🔐题目详情
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为 0 或者字符串不是一个合法的数值则返回 0
数据范围:字符串长度满足 进阶:空间复杂度 O(1) ,时间复杂度 O(n)
注意:
①字符串中可能出现任意符号,出现除 +/- 以外符号时直接输出 0
②字符串中可能出现 +/- 且仅可能出现在字符串首位。
输入描述:
输入一个字符串,包括数字字母符号,可以为空
返回值描述:
如果是合法的数值表达则返回该数字,否则返回 0
示例 1
输入:
返回值:
示例 2
输入:
返回值:
题目链接:把字符串转换成整数
💡解题思路
基本思路: 模拟解题思路 1:我们来看看题,它说让我们将字符串转换为整数,并且不能使用库函数,emmm,它说不能用你就不用?我偏要用!所以第一种思路就是使用库函数,这个就不多说了。
解题思路 2:
特殊的一种情况,判断字符串的第一个字符时,如果为-
,我们可以设计一个标记isPos
表示这个数是不是正数,如果不是,将isPos
设置为false
,反之为true
,如果为+
不用处理,如果为其他非数字字符,返回0
即可。
对于字符串上其他的字符,直接判断是不是数字,即判断字符的大小是否介于['0', '9']
之间,如果不满足,直接返回0
。
🔑源代码
解题思路 2:
🌱总结
本题为字符串模拟题,本质上就是判断一个字符是不是数字。
⭐️不要二⭐️
🔐题目详情
二货小易有一个 W*H 的网格盒子,网格的行编号为 0 ~ H-1,网格的列编号为 0 ~ W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于 2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为: 的算术平方根小易想知道最多可以放多少块蛋糕在网格盒子里。
输入描述:
每组数组包含网格长宽 W,H,用空格分割.(1 ≤ W、H ≤ 1000)
输出描述:
输出一个最多可以放的蛋糕数
示例 1
输入:
输出:
题目链接:不要二
💡解题思路
基本思路: 数学推理
解题思路:
这道题从题面上看,感觉是网易的一道笔试题,不管那么多了,我们来进行分析,任意两块蛋糕的距离不能等于 2,根据题目所给的距离计算公式我们可以得到以下等式:。由于题目给定的坐标不会是小数,因此如果上述式子成立,那么 与 一定也是整数,那这就好办了,我们先把结果拆分:$4 = 1+3
4=2+2
4=4+0(x1-x2)(y1-y2)(x1-x2) * (x1-x2)(y1-y2) * (y1-y2)4=0+4$即 不为或, 不为或,即(x1-x2) != 2\ &&\ (y1-y2) != 0或者(x1-x2) != 0\ &&\ (y1-y2) != 2,当满足此条件时对应的网格才可以放蛋糕。
我们可以来定义一个大小为h*w
的二维数组来表示对应位置能不能放置蛋糕,如果能,对应位置置为0
,否则置为1
,首先,创建一个二维数组,并将所有的元素都置为0
,表示能放置蛋糕,我们以从左到右,从上到下的顺序遍历该二维数组,如果遍历结果的值为0
,计数器加1
,并将下方向(i+2, j)
与右方向(i, j+2)
位置置为1
,因为我们就是以向右与向下方向遍历的,所以修改右边与下边的网格结果即可,当然你想把四周的网格都改掉也可以,但是没有必要。
🔑源代码
🌱总结
本题属于数学推理题,推导出不能放蛋糕的坐标关系时,我们可以先建立一个 W*H 二维数组,设状态0
表示能放蛋糕,初始时所有网格都标记为可以放蛋糕,然后我们遍历数组,按照不能放蛋糕的坐标条件来将不满足放蛋糕的位置标记为1
,最后我们在遍历过程中实时计算可以放蛋糕的格数即可。
版权声明: 本文为 InfoQ 作者【未见花闻】的原创文章。
原文链接:【http://xie.infoq.cn/article/0e39b8e371428ef2e11397693】。文章转载请联系作者。
评论