把字符串转换成整数

2023-05-16

题目描述

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

思路:设置两个标志位 一个tag 为1表示是正数,为0表示是负数,一个index,为‘+’则index是1,为‘-’则index是-1,什么都没index是0

     再用一个result去接受所有的数,result  =result * 10 + aa;从第一个开始慢慢加起来,不过每次都要判断是否上下溢出,最后还换转换类型

代码如下:

public class Solution {
    public int StrToInt(String str) {
        if(str.length() == 0) return 0;
             int tag = 0;
             int start = 0;
             if(str.charAt(0) == '+'){
                   start = 1;
                   tag  = 1;
             }else  if(str.charAt(0) == '-'){
                   start = 1;
                   tag = 0;
             }else{
                   start = 0;
                    tag = 1;
             }
              long result = 0;
              for(int i = start;i<str.length();i++){
                     char aa = str.charAt(i);
                      if(aa >= '0' && aa <= '9'){
                             result = result * 10 + (aa - '0');
                         if(tag == 1 && result > Integer.MAX_VALUE){
                             throw new RuntimeException("上溢出");
                         }
                         if(tag == 0 && result < Integer.MIN_VALUE){
                             throw new RuntimeException("下溢出");
                         }
                      }else{
                          return 0;
                      }
              }
               if(tag == 0){
                   return (int)(result * (-1));
               }else{
                   return (int)result;
               }
    }
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

把字符串转换成整数 的相关文章

  • 链表判环

    如何判断一个单链表是否有环 xff1f 有环的话返回进入环的第一个节点的值 xff0c 无环的话返回 1 如果链表的长度为N xff0c 请做到时间复杂度O N xff0c 额外空间复杂度O 1 给定一个单链表的头结点head xff08
  • 无环单链表判相交

    现在有两个无环单链表 xff0c 若两个链表的长度分别为m和n xff0c 请设计一个时间复杂度为O n 43 m xff0c 额外空间复杂度为O 1 的算法 xff0c 判断这两个链表是否相交 给定两个链表的头结点headA 和headB
  • 判断直线相交

    题目描述 给定直角坐标系上的两条直线 xff0c 确定这两条直线会不会相交 线段以斜率和截距的形式给出 xff0c 即double s1 xff0c double s2 xff0c doubley1 xff0c double y2 xff0
  • 机器学习实战之k-近邻算法(6)---手写数字识别系统(0-9识别)

    from numpy import import operator from os import listdir 创建数据集 def createDataSet group 61 array 1 0 1 1 1 0 1 0 0 0 0 0
  • 碰撞的蚂蚁

    题目描述 在n个顶点的多边形上有n只蚂蚁 xff0c 这些蚂蚁同时开始沿着多边形的边爬行 xff0c 请求出这些蚂蚁相撞的概率 这里的相撞是指存在任意两只蚂蚁会相撞 给定一个int n 3 lt 61 n lt 61 10000 xff0c
  • 交换练习

    请编写一个算法 xff0c 不用任何额外变量交换两个整数的值 给定一个数组num xff0c 其中包含两个值 xff0c 请不用任何额外变量交换这两个值 xff0c 并将交换后的数组返回 测试样例 xff1a 1 2 返回 xff1a 2
  • 比较练习

    对于两个32位整数a和b xff0c 请设计一个算法返回a和b中较大的 但是不能用任何比较判断 若两数相同 xff0c 返回任意一个 给定两个整数a 和b xff0c 请返回较大的数 测试样例 xff1a 1 2 返回 xff1a 2 思路
  • 寻找奇数出现

    有一个整型数组A xff0c 其中只有一个数出现了奇数次 xff0c 其他的数都出现了偶数次 xff0c 请打印这个数 要求时间复杂度为O N xff0c 额外空间复杂度为O 1 给定整形数组A 及它的大小n xff0c 请返回题目所求数字
  • 寻找奇数出现II

    给定一个整型数组arr xff0c 其中有两个数出现了奇数次 xff0c 其他的数都出现了偶数次 xff0c 找到这两个数 要求时间复杂度为O N xff0c 额外空间复杂度为O 1 给定一个整形数组arr 及它的大小n xff0c 请返回
  • 用JQuery去实现单个表格中的td数据修改

    需要学习资料的 43 微信公众号 学习资源后台找我 本人比较忙 我看到了会在后台帮你 xff0c 谢谢关注啦 JS代码如下 xff1a document ready function var tds 61 34 td 34 tds clic
  • 二维数组中的查找

    题目描述 在一个二维数组中 xff0c 每一行都按照从左到右递增的顺序排序 xff0c 每一列都按照从上到下递增的顺序排序 请完成一个函数 xff0c 输入这样的一个二维数组和一个整数 xff0c 判断数组中是否含有该整数 思路 xff1a
  • 替换空格

    题目描述 请实现一个函数 xff0c 将一个字符串中的空格替换成 20 例如 xff0c 当字符串为We Are Happy 则经过替换之后的字符串为We 20Are 20Happy 思路 xff1a s表示空白字符也就是空格 xff0c
  • 从尾到头打印链表

    题目描述 输入一个链表 xff0c 从尾到头打印链表每个节点的值 输入描述 输入为链表的表头 输出描述 输出为需要打印的 新链表 的表头 思路 xff1a 创建一个栈stack将链表依次倒入然后再依次倒出就可以了 xff1b 代码如下 xf
  • 用两个栈实现队列

    题目描述 用两个栈来实现一个队列 xff0c 完成队列的Push和Pop操作 队列中的元素为int类型 思路 xff1a 用两个栈stack1和stack2去实现队列 xff0c 先将所有数据倒入stack1中 xff0c 这叫入队 xff
  • 百度2014校园招聘笔试题武汉站三道算法设计题

    百度2014校园招聘笔试题武汉站三道算法设计题 1 给定任意一个整整数 求比这个数大且最小的不重复数 就是相邻两位不同 xff0c 例如1231 如1101就是重复数 解 xff1a 思路 xff1a 每次将给定的值加上1 xff0c 然后
  • 旋转数组的最小数字

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾 xff0c 我们称之为数组的旋转 输入一个递增排序的数组的一个旋转 xff0c 输出旋转数组的最小元素 例如数组 3 4 5 1 2 为 1 2 3 4 5 的一个旋转 xff0c 该数
  • 斐波那契数列

    题目描述 大家都知道斐波那契数列 xff0c 现在要求输入一个整数n xff0c 请你输出斐波那契数列的第n项 n lt 61 39 思路 xff1a 用非递归的方法 xff0c 即遍历的方法去实现斐波拉切数列 代码如下 xff1a pub
  • 跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶 xff0c 也可以跳上2级 求该青蛙跳上一个n级的台阶总共有多少种跳法 思路 xff1a 对于本题 前提只有 一次 1阶或者2阶的跳法 a 如果两种跳法 xff0c 1阶或者2阶 xff0c 那么假定
  • 变态跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶 xff0c 也可以跳上2级 它也可以跳上n级 求该青蛙跳上一个n级的台阶总共有多少种跳法 思路 xff1a 关于本题 xff0c 前提是n个台阶会有一次n阶的跳法 分析如下 f 1 61 1 f 2

随机推荐

  • 矩形覆盖

    题目描述 我们可以用2 1的小矩形横着或者竖着去覆盖更大的矩形 请问用n个2 1的小矩形无重叠地覆盖一个2 n的大矩形 xff0c 总共有多少种方法 xff1f 思路 xff1a 依旧是斐波那契数列 2 n的大矩形 xff0c 和n个2 1
  • 数值的整数次方

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent 求base的exponent次方 思路 xff1a 判断该整数的负数和正数情况 代码如下 xff1a public class Solution publ
  • 调整数组顺序使奇数位于偶数前面

    题目描述 输入一个整数数组 xff0c 实现一个函数来调整该数组中数字的顺序 xff0c 使得所有的奇数位于数组的前半部分 xff0c 所有的偶数位于位于数组的后半部分 xff0c 并保证奇数和奇数 xff0c 偶数和偶数之间的相对位置不变
  • 链表中倒数第k个结点

    题目描述 输入一个链表 xff0c 输出该链表中倒数第k个结点 思路 xff1a 倒数第k个结点 xff0c 则表示是第n k 43 1个结点 代码如下 xff1a public class ListNode int val ListNod
  • 反转链表

    题目描述 输入一个链表 xff0c 反转链表后 xff0c 输出链表的所有元素 思路 xff1a 用一个pre指向前一个结点 xff0c 用 next指向当前结点 next 61 head next head next 61 pre pre
  • 程序员面试题精选100题(46)-对称子字符串的最大长度

    程序员面试题精选100题 46 xff0d 对称子字符串的最大长度 题目 xff1a 输入一个字符串 xff0c 输出该字符串中对称的子字符串的最大长度 比如输入字符串 google xff0c 由于该字符串里最长的对称子字符串是 goog
  • 合并两个排序的链表

    题目描述 输入两个单调递增的链表 xff0c 输出两个链表合成后的链表 xff0c 当然我们需要合成后的链表满足单调不减规则 思路 xff1a 先创建一个头结点 head xff0c head val为 1 然后创建一个指向该头结点的指针p
  • 树的子结构

    题目描述 输入两棵二叉树A xff0c B xff0c 判断B是不是A的子结构 xff08 ps xff1a 我们约定空树不是任意一个树的子结构 xff09 思路 xff1a 可以先判断A和B的父结点是不是一样的 xff0c 如果一样进入递
  • 二叉树的镜像

    题目描述 操作给定的二叉树 xff0c 将其变换为源二叉树的镜像 输入描述 二叉树的镜像定义 xff1a 源二叉树 8 6 10 5 7 9 11 镜像二叉树 8 10 6 11 9 7 5 思路 xff1a 根节点下面的左子树和右子树分别
  • 顺时针打印矩阵

    题目描述 输入一个矩阵 xff0c 按照从外向里以顺时针的顺序依次打印出每一个数字 xff0c 例如 xff0c 如果输入如下矩阵 xff1a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1
  • 包含min函数的栈

    题目描述 定义栈的数据结构 xff0c 请在该类型中实现一个能够得到栈最小元素的min函数 思路 xff1a 用一个栈去存储所有元素 然后一个一个去比较 将小的那个值放到变量min里面 xff1b 代码如下 xff1a import jav
  • 栈的压入、弹出序列

    题目描述 输入两个整数序列 xff0c 第一个序列表示栈的压入顺序 xff0c 请判断第二个序列是否为该栈的弹出顺序 假设压入栈的所有数字均不相等 例如序列1 2 3 4 5是某栈的压入顺序 xff0c 序列4 xff0c 5 3 2 1是
  • 从上往下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点 xff0c 同层节点从左至右打印 思路 xff1a 意思就是按层遍历然后放到一个list集合里面去 xff0c 所以创建一个队列每次把一层的结点放进去 xff0c 然后一个一个判别是否有left结点
  • 二叉搜索树的后序遍历序列

    题目描述 输入一个整数数组 xff0c 判断该数组是不是某二叉搜索树的后序遍历的结果 如果是则输出Yes 否则输出No 假设输入的数组的任意两个数字都互不相同 思路 xff1a 因为是二叉搜索树 xff0c 所以根节点的左子树小于右子树 x
  • 二叉树中和为某一值的路径

    题目描述 输入一颗二叉树和一个整数 xff0c 打印出二叉树中结点值的和为输入整数的所有路径 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径 思路 xff1a 用先序遍历递归的思想去实现 xff0c 到最后叶节点如果不能
  • 复杂链表的复制

    题目描述 输入一个复杂链表 xff08 每个节点中有节点值 xff0c 以及两个指针 xff0c 一个指向下一个节点 xff0c 另一个特殊指针指向任意一个节点 xff09 xff0c 返回结果为复制后复杂链表的head xff08 注意
  • ubantu20下python安装和卸载

    查看系统版本 python3 version 卸载ubantu上的python版本 sudo apt get remove python3 卸载python3及其依赖 sudo apt get remove auto remove pyth
  • [转]DBSCAN聚类算法——机器学习(理论+图解+python代码)

    原文链接 xff1a https blog csdn net huacha article details 81094891 一 前言 二 DBSCAN聚类算法 三 参数选择 四 DBSCAN算法迭代可视化展示 五 常用的评估方法 xff1
  • 求1+2+3+...+n

    题目描述 求1 43 2 43 3 43 43 n xff0c 要求不能使用乘除法 for while if else switch case等关键字及条件判断语句 xff08 A B C xff09 思路 xff1a 用递归 xff08
  • 把字符串转换成整数

    题目描述 将一个字符串转换成一个整数 xff0c 要求不能使用字符串转换整数的库函数 思路 xff1a 设置两个标志位 一个tag 为1表示是正数 xff0c 为0表示是负数 xff0c 一个index xff0c 为 43 则index是