首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果让 strpos 查找一个整数类型的数字会发生什么?

strpos用于查找字符串中某个子串第一次出现的位置。 那么,如果不小心给strpos传入的是一个整数类型又会怎么样呢? 假设有一个字符串"I don't happy !...585是文件,或者数据库读取出来的,且做了数字类型格式化。 ? 直接使用strpop($str,$find);获取字符串的起始位置,然后再使用substr做一个截取。...上面得到的是一个空字符串 查看php 源码中string.c的文件,找到strpos的代码。strpos对于非字符串类型的数据使用php_needle_char做了一次类型转换,强制类型转换。 ?...从 C 代码中可以看到,如果是整数类型,则强制转换成char类型。所以当你传入585的时候,使用char进行强转之后得到的结果是字符串"I",所以实际上截取之后的字符串长度为0。...类型转换分为下列几种情况: 1、整形,长整型直接转成char类型 2、布尔值,分别转成字符'1','0',所以strpost('e1',true);返回内容为1 3、double类型数据,先强转为长整型再转换成

81020
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    我用我的270篇文章做了一个数字 AI 替身

    23 年在 ChatGPT 刚出来的时候就在 V 站上看到有一个看到有大佬用自己的微信聊天记录和博客文章生成了一个 AI 替身:当时就想着自己做一个,不过当时实现起来还比较复杂,直到如今 AI 已经越来越普及...,想做一个自己的 AI 替身成本也非常低了。...于是就有了下图里的效果:和自己的内容这么对话还挺有意思的,现在大家就可以直接在我公众号回复消息和”他“聊天。...也可以通过小程序来使用:图片如何搭建这里使用的数据源全都是我发布在公众号里的 260 篇文章。...有兴趣的朋友可以试试尝尝鲜,后续我可以持续完善这个知识库,比如输入一些代码,之后再有向我咨询问题的朋友就可以先去问问”他“,大家可以直接在公众号里和”对话“,说不定还有意外收获。

    11900

    输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字

    题目: 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。...思路: 1 第一种思路,可以把数字存在数组里,比如数组中最大值是15,那么就开一个长度未15的数组1 存在a[1]里 15存在a[15]里;这样用15-a[1]判断里面是否有值就可以了。...2 因为是求两个数,时间复杂度是O(n),还是排过顺序的数组,那么可以从头和从尾同时找;从尾开始的tail下标大于sum,则tail左移;如果tail和head相加小于sum,则tail右移;指导头尾两个数相加等于求和...;或者tail大于head为止; 代码如下: ''' 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。...如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。

    2.2K10

    2025-03-13:统计不是特殊数字的数字数量。用go语言,给定两个正整数 l 和 r。对于一个数字 x,除了 x 自身以外的

    2025-03-13:统计不是特殊数字的数字数量。用go语言,给定两个正整数 l 和 r。对于一个数字 x,除了 x 自身以外的所有正因数称为 x 的真因数。...如果一个数字恰好有两个真因数,它被称为特殊数字。例如: 1.数字 4 是特殊数字,因为它的真因数是 1 和 2。 2.数字 6 不是特殊数字,因为它的真因数有 1、2 和 3。...你的任务是计算区间 [l, r] 内,非特殊数字的数量。 1 <= l <= r <= 1000000000。 输入: l = 4, r = 16。 输出: 11。...2.初始化计数器和存储数组:首先创建一个变量 res 用于统计非特殊数字的数量,初始化为区间内的数字总数 (r - l + 1)。...4.判断特殊数字:若 v[i] 为 0,表示数字 i 不是特殊数字。在 [l, r] 区间内,对于每个 i 的平方,若在区间内则该数字为特殊数字,res 减一。然后标记 i 的倍数为非特殊数字。

    4100

    算法题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。...例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ,则依次打印出数字:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10...题解+代码(Java和Python) 简单来说,就是不断地收缩矩阵的边界 定义四个变量代表范围,up、down、left、right 向右走存入整行的值,当存入后,该行再也不会被遍历,代表上边界的 up...加一,同时判断是否和代表下边界的 down 交错 向下走存入整列的值,当存入后,该列再也不会被遍历,代表右边界的 right 减一,同时判断是否和代表左边界的 left 交错 向左走存入整行的值,...当存入后,该行再也不会被遍历,代表下边界的 down 减一,同时判断是否和代表上边界的 up 交错 向上走存入整列的值,当存入后,该列再也不会被遍历,代表左边界的 left 加一,同时判断是否和代表右边界的

    84831

    面试题解:输入一个数A,找到大于A的一个最小数B,且B中不存在连续相当的两个数字

    昨天发的算法有一处情况没考虑到,比如加一后有进位,导致又出现重复数字的情况,修正后今天重新发一次。 比如输入99,那B应该是101 因为100有两个连续相当的0。...优化思路: 如果输入的数本身不存在重复,则加1;如果存在重复,比如我们输入的是11100234,那如果要找比11100234大的最小没有重复的数,最先重复的两位数是11,那么如果想让11不重复并且比...# -*- coding: utf-8 -*- """ 题目:输入一个数A,找到大于A的一个最小数B,且B中不存在连续相当的两个数字。...比如输入99,那B应该是101 因为100有两个连续相当的0 基本思路:最坏的办法 加1一直加1 直到找到有不重复的数为止 优化的思路 如果输入是1099 加1后变成1100,那么他下一个不重复的数如果一直加...if string_num[i-1] == string_num[i]: #如果有重复的数字,则把重复的两个数,中小的一位数字加1,然后在把后面的位置

    66810

    2023-10-11:用go语言,一个数字n,一定要分成k份, 得到的乘积尽量大是多少? 数字n和k,可能非常大,到达10^12

    2023-10-11:用go语言,一个数字n,一定要分成k份, 得到的乘积尽量大是多少? 数字n和k,可能非常大,到达10^12规模。 结果可能更大,所以返回结果对1000000007取模。...4.使用循环从1到rest(即剩余数字n)遍历cur,cur为当前需要划分的数字。 5.将cur与process1(rest-cur, j-1)相乘,得到当前划分下的乘积curAns。...算法2:贪心的解 1.首先判断k是否为0或者n是否小于k,若是则返回-1。 2.计算每份应得数字a,为n除以k的商。 3.计算有多少份应该升级成a+1,并将结果保存到变量b中。...5.使用循环从0到b遍历i,将a+1乘以ans,更新ans的值。 6.使用循环从0到k-b遍历i,将a乘以ans,更新ans的值。 7.返回ans作为结果。...算法3:贪心的解(最优解) 1.首先判断k是否为0或者n是否小于k,若是则返回-1。 2.初始化变量mod为1000000007。 3.计算每份应得数字a,为n除以k的商。

    19540

    2024-11-29:替换字符可以得到的最晚时间。用go语言,给定一个字符串 s,其中包含一个12小时制的时间格式,部分数字可能

    2024-11-29:替换字符可以得到的最晚时间。用go语言,给定一个字符串 s,其中包含一个12小时制的时间格式,部分数字可能被"?"替换。...将 s 中的问号替换为数字,使得结果字符串表示的时间是一个有效的12小时制时间,并且是可能的最晚时间。 返回替换后的结果字符串。 输入:s = "1?:?4"。 输出:"11:54"。...大体步骤如下: 1.将输入的时间字符串转换为字节数组并存储在变量 t 中。 2.检查第一个小时位,如果是问号,则根据下一位数字的情况确定替换为 '1' 还是 '0'。...3.检查第二个小时位,如果是问号且第一个小时位是 '1',则替换为 '1';否则替换为 '9'。 4.检查分钟的第一位,如果是问号,则替换为 '5'。...总的时间复杂度为 O(1),因为不论输入的时间是什么,操作步骤都是固定的,所需的时间是固定的。 总的额外空间复杂度为 O(1),因为只使用了固定大小的变量和常量存储空间。

    4620

    一日一技:如何统计一个数字的二进制值里面有多少个1

    我们知道,在 Python 里面,查看一个数字的二进制函数为:bin,例如: >>> bin(4523) '0b1000110101011' 所以我们很快就能想到一个统计方案: one_num = 0...: 如果使用这个方法,由于4523的二进制值有13位,所以 for 循环需要执行13次才能完成统计。...更一般的结论,一个正整数 n,它的二进制值有位,所以这种解法的时间复杂度始终为O(logn),那么我们有没有什么办法优化这个算法呢?...这个时候,我们观察一个现象: 给出一个二进制的值1000110101011与这个值减1的值1000110101010,他们做与运算,结果为:1000110101010。可以看到,最右侧的1变成了0....于是,给定一个正整数x,只需要统计移除多少位的最右侧的1以后,这个数字变成了0,就能知道它里面有多少个1.于是我们可以写出如下的代码: count = 0 n = 4523 while n: n

    1.2K20
    领券