[PHP] 算法-将一个字符串转换成一个整数的PHP实现
题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 示例1
输入
+2147483647
1a33
输出
2147483647
0
思路:
1.处理负号
2.处理正号
3.字符串中包含非数字字符的直接返回0
4.'0'字符的ascii码是48
4.遍历字符串,从0位置开始扫描,当前数字字符ascii码减去'0'字符ascii码,就应该是当前位置的整型 StrToInt(str)
if empty(str) return 0
symbol=1
if str[0]=='+'
symbol=1; str[0]='0'
if str[0]=='-'
symbol=-1; str[0]='0'
res=0
for i=0;i<str.size;i++
if(str[i]<'0' || str[i]>'9') //包含非数字字符的,直接返回0
res=0 break;
res=res*10+str[i]-'0' //进位用和ascii相减算出整型数字
res=symbol*res //加上正负号
return res
<?php
function StrToInt($str){
if (empty($str)){return 0;}
$symbol=1;
if ($str{0}=='+'){
$symbol=1;
$str{0}='0';
}
if ($str[0]=='-'){
$symbol=-1;
$str{0}='0';
}
$res=0;
for ($i=0;$i<strlen($str);$i++){
if($str{$i}<'0' || $str{$i}>'9'){ //包含非数字字符的,直接返回0
$res=0;
break;
}
$res=$res*10+$str{$i}-'0'; //进位用和ascii相减算出整型数字
}
$res=$symbol*$res; //加上正负号
return $res;
}
$s="-123";
$res=StrToInt($s);
var_dump($res);
[PHP] 算法-将一个字符串转换成一个整数的PHP实现的更多相关文章
- php 限制标题长度,将一个中文转换成一个字符
点击链接加入群[php/web 学习课堂]:https://jq.qq.com/?_wv=1027&k=5UJ9vEa 欢迎大家加入,一起讨论学习 玩这个功能的时候,我们要注意一点,我们是用中 ...
- Java中将0x开头的十六进制字符串转换成十进制整数
1.Integer.toString(int i) 由于input(输入数据)是以0x开头的字符串,并不是整型.因而在用 String s = Integer.toString(input); 时用会 ...
- Java将一段逗号分割的字符串转换成一个数组
String 类:String 类代表字符串.Java 程序中的所有字符串字面值都作为此类的实例实现.字符串是常量,它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因为 String 对象是 ...
- double类型字符串转换成一个纯数字字符串和一个小数点位数的c++代码
今天工作中遇到一个要不一个double型的字符串转换成一个纯字数字符串和一个标志这个数字字符串的小数点有几位的int类型 例如:“23.123”--->“23123” + 3 比较简单.就是 ...
- 《将一个字符串转换成datetime时,先分析该字符串以获取日期,然后再将每个变量放置到datetime对象中》的解决办法
我们在写代码时,稍不注意就收到VS那文不对题的错误提示. 最近在项目上碰到了“将一个字符串转换成datetime时,先分析该字符串以获取日期,然后再将每个变量放置到datetime对象中”的这个错误提 ...
- java基础面试题:如何把一段逗号分割的字符串转换成一个数组? String s = "a" +"b" + "c" + "d";生成几个对象?
package com.swift; public class Douhao_String_Test { public static void main(String[] args) { /* * 如 ...
- Sql 把Xml字符串转换成一张表
分享一个Sql技巧,把xml字符串转换成一个表格 DECLARE @IdHandel INT EXEC sp_xml_preparedocument @IdHandel OUTPUT, @Bar_Ip ...
- 算法练习-字符串转换成整数(实现atoi函数)
练习问题来源 https://leetcode.com/problems/string-to-integer-atoi/ https://wizardforcel.gitbooks.io/the-ar ...
- PHP算法之字符串转换整数 (atoi)
请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之 ...
随机推荐
- Codeforces Round #424 (Div. 1, rated, based on VK Cup Finals)
A 题意:给你人的坐标,钥匙的坐标,办公室的坐标.要求所有人能够拿到钥匙并且走到办公室的最短时间.一个位置只能有一个人,一个位置只有一把钥匙,人和钥匙可以在同一个位置. 思路:DP+贪心,dp[i]表 ...
- JAVA程序CPU 100%问题排查
做JAVA开发的同学一定遇到过的爆表问题,看这里解决 https://www.cnblogs.com/qcloud1001/p/9773947.html 本文由净地发表于云+社区专栏 记一次Ja ...
- JVM运行时数据区(一)
1.名词解释: 栈帧:栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素. 2.程序计数器: 程序计数器是一块比较小的内存空间,可以将它看作是当前线程所执 ...
- 【webpack】流行的前端模块化工具webpack初探
从开发文件到生产文件 有一天我突然意识到一个问题,在使用react框架搭建应用时,我使用到了sass/less,JSX模版以及ES6的语法在编辑器下进行开发,使用这些写法是可以提高开发的效率.可是 ...
- Flask上下文
Flask的核心机制!关于请求处理流程和上下文 学习一样东西不能只停留在表面,我们要探索其中的细节,学习作者的编程思想,这样才能更进一步. 关于WSGI WSGI(全称Web Server Gatew ...
- Laravel 5.6: Specified key was too long error
Laravel 5.6: Specified key was too long error 在Laravel执行以下命令: php artisan migrate 这是由于Laravel5.6设置了数 ...
- 解决微信小程序登录与发布的一些问题
解决微信小程序的问题 图片在电脑上显示但在手机上却无法显示的问题 要使用的是本地图片,不想把图片上传到网络再通过https的方式解决,解决方法如下: 1.image src中的图片地址对英文字母大小写 ...
- Python学习笔记【第三篇】:if判断、while循环、for循环
如果某些条件满足,才能做某件事情,而不满足时不允许做,这就是所谓的判断 不仅生活中有,在软件开发中“判断”功能也经常会用到 if判断语句 if 要判断的条件: 条件成立 num = 50 if num ...
- Mybatis优缺点
优点:SQL写在XML中,便于统一管理和优化 提供映射标签,支持对象和数据库的orm字段关系映射 可以对SQL进行优化 缺点: SQL工作量大 mybagtis移植姓不好 不支持级联
- Ansible工具原理一
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命 ...