[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);

原文地址:https://www.cnblogs.com/taoshihan/p/9853350.html

时间: 2024-10-13 19:22:26

[PHP] 算法-将一个字符串转换成一个整数的PHP实现的相关文章

C语言将一个字符串转换成整数

1.环境 ubuntu16.04 Eclipse C语言 2.问题 用C语言编写程序,将一个字符串转换成整数. 3.解决方法 程序代码:https://github.com/southeast02/JZOF/blob/master/chap01_page12_1.c

Java将一段逗号分割的字符串转换成一个数组

String 类:String 类代表字符串.Java 程序中的所有字符串字面值都作为此类的实例实现.字符串是常量,它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因为 String 对象是不可变的,所以 可以共享.String 类包括的方法可用于检查序列的单个字符.比较字符串.搜索字符串.提取子字符串.创建字符串副本并将所有字符全部转换为大写或小写.Java 语言提供对字符串串联符号("+")以及将其他 对象转换为字符串的特殊支持.字符串串联是通过 StringBuilde

数组-08. 字符串转换成十进制整数(15)

1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main(){ 5 string s; 6 int i,sum=0; 7 bool flag=false,f=false; 8 getline(cin,s); 9 for(i=0;s[i]!='#';++i){ 10 if(s[i]=='-'&&!flag) 11 f=true; 12 else if(s[i]<='9'&a

数组-08. 字符串转换成十进制整数

数组-08. 字符串转换成十进制整数(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 张彤彧(浙江大学) 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出.如果过滤后字符串的首字符为“-”,代表该数是负数. 输入格式: 输入在一行中给出一个以#结束的非空字符串. 输出格式: 在一行中输出转换后的十进制数.题目保证输出在长整型范围内.

5-2?字符串转换成十进制整数

5-2 字符串转换成十进制整数   (15分) 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出.如果在第一个十六进制字符之前存在字符"-",则代表该数是负数. 输入格式: 输入在一行中给出一个以#结束的非空字符串. 输出格式: 在一行中输出转换后的十进制数.题目保证输出在长整型范围内. 输入样例: +-P-xf4+-1!# 输出样例: 这个题有一个坑点: 就是如果是0的话前面没有负号 -390

double类型字符串转换成一个纯数字字符串和一个小数点位数的c++代码

今天工作中遇到一个要不一个double型的字符串转换成一个纯字数字符串和一个标志这个数字字符串的小数点有几位的int类型 例如:“23.123”--->“23123” + 3   比较简单.就是把代码贴这里,以后用到了,可以直接拽来用 #include "stdafx.h" #include <stdlib.h>#include <iostream>#include <string> void getInfo(const char* pNum)

Sql 把Xml字符串转换成一张表

分享一个Sql技巧,把xml字符串转换成一个表格 1 1 DECLARE @IdHandel INT 2 2 EXEC sp_xml_preparedocument @IdHandel OUTPUT, @Bar_Ip 3 3 4 4 INSERT INTO T_Bar_Ip_Info(Bar_id,Ip_from,Ip_to,IpFromStr,IpToStr,IsHead,AuditStatus,AuditTime,CreateTime) 5 5 SELECT @barId,Ip_from,I

C语言atoi()函数:将字符串转换成int(整数)

头文件:#include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为:int atoi (const char * str); [函数说明]atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回. [返回值]返回转换后的整型数:如果 str 不能转换成 int 或者 str 为

C语言:实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数,如+1234输出1234

#include<stdio.h> int my_atoi(char s[])     /*字符串转换函数*/ {  char* p = s;  int flag = 1;  int ret = 0;  if(*p=='-')  {   flag=-1;     }     if((*p=='+')||(*p=='-'))     {      p++;      }  while(*p!='\0')   {   if((*p>='0')&&(*p<='9'))