剑指Offer - 九度1508 - 把字符串转换成整数2014-02-06 23:46 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入: 输入可能包含多个测试样例.对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1<= n<=10000000). 输出: 对应每个测试案例,若输入为一个合法的字符串(即代表一个整数),则输出这个整数.若输入为一个非法的字符串,则输出“My God”. 样例输入: 5 -5 +8 样例输出: 5 -5 8 题…
题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0 题目分析 这种题经常考,就是要求不使用库函数,要自己去写. 这种题需要我们对库函数的实现原理有比较深的了解,有些题会很难,考察对基础的掌握程度. 不过这道题比较简单. 代码 function StrToInt(str) { let res = 0, flag =…
  题目描述:   将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0.   输入输出描述:   输入一个字符串,包括字母.数字.符号,可以为空.如果是合法的数值表达则返回该数字,否则返回0.   解题思路:   本题解决起来并不困难,功能实现简单,但是主要的问题是能否把各种不同的特殊情况都考虑进去,也就是代码的鲁棒性和思考的全面,比如空…
问题描述 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数.   首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号:假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数. 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响. 注意:…
题目 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号:假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数. 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响. 注意:假如该字…
剑指 Offer 67. 把字符串转换成整数 Offer_67 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/2/15 23:13 */ /** * 题目描述:写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. */ public class Offer_67 { public int strToInt(String…
题目 剑指 Offer 67. 把字符串转换成整数 思路1 根据题意,要解决这题,首先要判断的条件有: 不包括首位空格 第一位必须为:+.-.数字三者其一,否则不合法 数字必须连续的,如果遇到非数字,结束判断 判断结果要在 \(-2^{31}\)~\((2^{31}-1)\) 之间,如果超过的话,就输出最大值 / 最小值 我们用sign记录符号.res记录每次遍历累加的值.threshold记录阈值(我们阈值取Integer.MAX_VALUE/10,即小了一位数,作用后面再说).index记录…
  本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不能使用atoi或者其他类似的库函数. 思路 题目很简单,主要就是实现对每个字符转化为数字,并进行累加即可.但是有很多特殊情况都需要考虑进去,例如null.空字符串.带有正负号.字符不是数字.溢出等等. 对于非法的特殊输入,返回值为0,还要用一个全局变量进行标记. 写代码时一定要考虑清楚各种测试用例.…
一.题目:字符串的排列 题目:输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a.b.c所能排列出来的所有字符串abc.acb.bac.bca.cab和cba. 二.解题思路 2.1 核心步骤 我们可以把一个字符串看成由两部分组成:第一部分为它的第一个字符,第二部分是后面的所有字符.在下图中,我们用两种不同的背景颜色区分字符串的两部分. Step1.把字符串分为两部分,一部分是字符串的第一个字符,另一部分是第一个字符以后的所有字符(有阴影背景的区域). Ste…
问题描述: 输入一个整数n,求1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1,10,11,12,1一共出现了5次. 思路:(不考虑时间效率的解法,肯定不是面试官期望的) 直观想法:累加1到n中每个整数中1出现的次数. 每个整数中1出现的次数可以由除以10和模10来计算得到. 代码如下: boolean invalidInput = false; //不考虑时间效率的解法 public int NumberOf1Between1AndN_Soluti…