判断给定的一个不限长的数字串大小变化趋势、经典面试题:猴子排成圈踢出求最后剩下大王编号以及Debian服务器php中安装IMAP扩展各种报错解决过程

一、判断给定的一个不限长的数字串大小变化趋势

    自制了一道面试题:给定一个不限长的数字字符串,判断每一位数字的大小变化趋势是否是^或v趋势,如果是就返回true,如果不是就返回false。比如121即属于^,322129即属于v。这是一道相对较简单的笔试题,不过可以看看应聘者的动手能力和思考能力。代码示例如下:

<?php
#给定一个不限长的数字字符串,判断每一位数字的大小变化趋势是否是^或v趋势
$args = getopt('a:');
extract($args);
echo "入参:a{$a}\n";function checkOne($str){$arrow = false;$level = 0;for($i = 1; $i<strlen($str); $i++){$char = $str{$i};if(!is_numeric($char)){return false;}else{if($char > $str{$i-1}){$newarrow = 'up';}elseif($char <$str{$i-1}){$newarrow = 'down';}   }   if($arrow != $newarrow){$arrow = $newarrow;$level ++; }   }   if($level >2 ) return false;return true;
}var_dump(checkOne($a));

     从代码中可以看到,主要的思路就是判断数字大小趋势发生转折的点,判断有几次转折。因此这道题也可以改成判断数字串的大小变化趋势是否是^v^v这种等,代码上难度没有什么增加,不过在正解及由问题转化成思路的难度上对应聘者会有一点增加。示例代码运行结果如下:

[root@04007 php]# php line.php -a=123578954
入参:a123578954
bool(true)
[root@04007 php]# php line.php -a=12357895478
入参:a12357895478
bool(false)
[root@04007 php]# php line.php -a=1239965331
入参:a1239965331
bool(true)
[root@04007 php]# php line.php -a=1239a965331
入参:a1239a965331
bool(false)

二、经典面试题:一群猴子排成一圈,数到第m只,把它踢出圈,求最后剩下的那只大王编号

    题目:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。使用程序模拟该过程。

 #. 问题解决方法:解答1:

        构建一个n个元素的数组,按顺序进行剔除,超过末尾则进行从头开始,在每次删除元素后重置一下数组。实现如下:

#经典面试题:一群猴子排成一圈,数到第m只,把它踢出圈,求最后剩下的那只大王编号
#007.cn$args = getopt('a:m:');
extract($args);
echo "入参:a{$a}, m:{$m} 求大王编号->\n";function lastMonkey($a, $m){$monkey = range(1,$a);echo "初始编号:",implode(',', $monkey),"\n";$index =0; #猴子数量大于1就一直进行剔除$cycle = 1;while(count($monkey) > 1){ $index += $m-1;if($index>count($monkey)-1){$index = $index%(count($monkey));}   unset($monkey[$index]);$monkey = array_values($monkey);echo "第{$cycle}轮.剔除后编号:",implode(',', $monkey),"\n";$cycle++;usleep(300);}   return current($monkey);
}echo "最终大王编号:". lastMonkey($a, $m)."\n\n";

 #. 问题解决方法:解答2:

        构建一个n个元素的数组,不从头开始,但将不剔除的元素放至最后,直至只剩一个元素,实现如下:

#经典面试题:一群猴子排成一圈,数到第m只,把它踢出圈,求最后剩下的那只大王编号
#04007.cnecho "入参:a{$a}, m:{$m} 求大王编号->\n";
function domonkey($a ,$m){$monkey = range(1, $a);echo "初始编号:",implode(',', $monkey),"\n";$i = 1;while(count($monkey) > 1){ #只要不是m的倍数就放至队列最后,否则就剔除if( $i % $m ){array_push($monkey, array_shift($monkey));}else{array_shift($monkey);echo '第'.($i/3)."轮.剔除后编号:",implode(',', $monkey),"\n";}   $cycle++;$i++;}   return current($monkey);
}
echo '大王编号:'.domonkey($a,$m), "\n";

 #. 问题解决方法:执行结果

在服务器上执行php脚本命令及输出过程截图如下:

三、Debian服务器php中安装IMAP扩展各种报错解决过程

    因业务中需要,我需要在php中执行QQ邮箱登录并拿回QQ邮箱中的邮件。服务器是DEBIAN服务器,环境是docker安装的php环境。在PHP中使用imap_open函数打开邮箱连接(记得在邮件设置中打开IMAP功能)。执行imap_open函数需要安装php_imap扩展,如果是windows下去除php_imap.dll扩展注释。

 Fatal error: Uncaught Error: Call to undefined function imap_open() in D:\mail.php:10 Stack trace: #0 {main} thrown Who works with NT systems, can open the file "\xampp\php\php.ini" to active the php exstension by removing the beginning semicolon at the line ";extension=php_imap.dll". Should be: extension=php_imap.dll

    但在Debian服务器中的docker环境下安装imap扩展还是遇到了一麻烦。直接进docker下php容器,开始安装。报错:configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information. 

root@2123245efdr5:/var/www# docker-php-ext-install imap
checking for IMAP Kerberos support... no
checking for IMAP SSL support... no
checking for utf8_mime2text signature... new
checking for U8T_DECOMPOSE... 
configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.

    找了一下需要安装libc-client-devel模块,不过找了找发现这个模块名称只是适用于centos等,对Debian服务器没法安装,报错E: Unable to locate package libc-client-devel,因为根本不叫这名字。Debian -- Error 这里有说明这个包在debian下的完整名称。也可以使用apt-cache search libc-client搜索相关的包,发现需要使用ibc-client2007e-dev。

#在debian服务器下执行apt-get install libc-client-devel会报无法找到包文件
user@n123:~$ sudo apt-get install libc-client-devel
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libc-client-devel
#通过apt-cache search libc-client搜索查找
user@n123:~$ sudo apt-cache search libc-client
libc-client2007e - c-client library for mail protocols - library files
libc-client2007e-dev - c-client library for mail protocols - development files
uw-mailutils - c-client support programs
#需要使用如下
root@4ba2159bfcd0:/var/www# apt-get install libc-client2007e-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
......
After this operation, 3816 kB of additional disk space will be used.
Do you want to continue? [Y/n] y......

    但仍然没有结束,安装时还遇到报错:configure: error: This c-client library is built with Kerberos support.Add --with-kerberos to your configure line. Check config.log for details.看提示是让我们在后面加一些选项,于是增加选项再执行安装.

root@4009lki4434dd:/var/www# docker-php-ext-install imap
checking for utf8_mime2text signature... new
checking for U8T_DECOMPOSE... 
checking for pam_start in -lpam... yes
checking for crypt in -lcrypt... yes
configure: error: This c-client library is built with Kerberos support.Add --with-kerberos to your configure line. Check config.log for details.
#提示安装时添加--with-kerberos,增加选项再执行安装
root@4009lki4434dd:/var/www# docker-php-ext-configure imap --with-kerberos --with-imap-ssl && docker-php-ext-install imap
checking for crypt in -lcrypt... yes
checking for krb5-config... no
configure: error: Kerberos libraries not found.Check the path given to --with-kerberos (if no path is given, searches in /usr/kerberos, /usr/local and /usr )

    选项是加了,但看提示是加的选项没有作用,因为默认的路径里找不到Kerberos libraries,此原因是因为没有安装Kerberos libraries。于是执行安装libkrb5-dev库,这一步成功之后再进行安装imap就成功了。

#安装libkrb5-dev库
root@4009lki4434dd:/var/www#  apt-get install libkrb5-dev
#最后执行安装imap安装成功:
root@4009lki4434dd:/var/www# docker-php-ext-configure imap --with-kerberos --with-imap-ssl && docker-php-ext-install imap
#如果已经安装了也可尝试使用下面的命令指定kerberos库的目录 
docker-php-ext-configure imap --with-kerberos-inc=/usr/include --with-imap-ssl && docker-php-ext-install imap

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/418209.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSM健身俱乐部网站—计算机毕业设计源码25623

摘 要 大数据时代下&#xff0c;数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求&#xff0c;利用互联网服务于其他行业&#xff0c;促进生产&#xff0c;已经是成为一种势不可挡的趋势。在健身俱乐部的要求下&#xff0c;开发一款整体式结构的健身俱乐部网站…

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测 目录 多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变…

​​NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002

继续,执行pom.xml引入依赖以后,发现以下几种报错: 可以看到在下载aws-java-sdk-bundle 1.12.710版本的时候报错了 可以看到日志信息,就是在阿里云上下载的,因为阿里云上缺少这个jar包 aws-java-sdk-bundle-1.12.710.jar 这个jar包,我还特意去阿里云上查询了一下 https://deve…

结合Python与GUI实现比赛预测与游戏数据分析

在现代软件开发中&#xff0c;用户界面设计和数据处理紧密结合&#xff0c;以提升用户体验和功能性。本篇博客将基于Python代码和相关数据分析进行讨论&#xff0c;尤其是如何通过PyQt5等图形界面库实现交互式功能。同时&#xff0c;我们将探讨如何通过嵌入式预测模型为用户提供…

java基础-线程实现

文章目录 什么是线程线程的基本特性线程的状态线程的调度 线程的实现方式1. 继承 Thread 类2. 实现 Runnable 接口3. 使用 Callable 和 Future4. 使用 ExecutorService总结 什么是线程 线程&#xff08;Thread&#xff09;是计算机科学中的一个重要概念&#xff0c;它是操作系…

蔬菜识别数据集 蔬菜数据集 用于训练,有十种蔬菜,如图已经标注好的版本

数据集概述 该数据集包含十种常见的蔬菜&#xff1a;胡萝卜、包菜、水果辣椒、青瓜、南瓜、土豆、花菜和西红柿。数据集已经进行了精细的标注&#xff0c;适用于深度学习模型的训练&#xff0c;尤其是用于物体检测和分类任务。 数据集特点 种类多样&#xff1a;涵盖了八种蔬菜…

maven-helper插件解决jar包冲突实战

经常遇到jar包冲突问题&#xff0c;今天梳理一下&#xff1a; 1、打开idea 2、安装后 打开pom文件 点击 3、点击common-io 展示冲突的jar,标红的就是冲突版本&#xff0c;白色的是当前的解析版本。 pom文件多了排除的信息 <dependency><groupId>org.springframew…

0基础跟德姆(dom)一起学AI Python进阶07-多线程_生成器

* 多进程案例 * 带参数的多进程代码**(重点)** * 查看进程的id * 演示: 进程之间数据是相互隔离的 * 多线程案例 * 入门案例 * 带参数的多线程代码**(重点)** * 演示: 线程之间数据是相互共享的 * 互斥锁 * 上下文管理器**(重点)** > 解析: with open原理, 为啥…

Unity6 + UE5.4 PSO缓存实践记录

题图&#xff08;取自COD冷战的着色器编译提示&#xff09; PSO&#xff08;管线状态对象 Pipeline State Object&#xff09;是伴随现代图形API&#xff08;DirectX12、Vulkan、Metal&#xff09;而出现的概念&#xff0c;它本质上是单次绘制时渲染管线所处的状态信息的集合&…

机器学习中的聚类艺术:探索数据的隐秘之美

一 什么是聚类 聚类是一种经典的无监督学习方法&#xff0c;无监督学习的目标是通过对无标记训练样本的学习&#xff0c;发掘和揭示数据集本身潜在的结构与规律&#xff0c;即不依赖于训练数据集的类标记信息。聚类则是试图将数据集的样本划分为若干个互不相交的类簇&#xff…

关于武汉高芯coin417G2红外机芯的二次开发

文章目录 前言一、外观和机芯参数二、SDK的使用1、打开相机2、回调函数中获取全局温度和图像3、关闭相机 前言 最近工作中接触了一款基于武汉高芯科技有限公司开发的红外模组,即coin417g2(测温型)9.1mm镜头.使用此模组,开发了一套红外热成像检测桌面应用程序.下面简单记录下该…

PHP轻量级高性能HTTP服务框架 - webman

摘要 webman 是一款基于 workerman 开发的高性能 HTTP 服务框架。webman 用于替代传统的 php-fpm 架构&#xff0c;提供超高性能可扩展的 HTTP 服务。你可以用 webman 开发网站&#xff0c;也可以开发 HTTP 接口或者微服务。 除此之外&#xff0c;webman 还支持自定义进程&am…

UE5 C++ 读取图片插件(一)

原来UE可以使用 static,之前不知道&#xff0c;一用就报错。 static TSharedPtr<IImageWrapper> GetImageWrapperByExtention(const FString InImagePath); //智能指针&#xff0c;方便追寻引用C,加载ImageWrapperstatic UTexture2D* LoadTexture2D(const FString& …

大路灯护眼灯有必要吗安全吗?性价比高落地护眼灯推荐

大路灯护眼灯有必要吗安全吗&#xff1f;近几年来&#xff0c;随着生活节奏的加快&#xff0c;目前青少年的近视率呈现一个直线上升的趋势&#xff0c;其中占比达到了70%以上&#xff0c;并且最令人意外的是小学生竟然也占着比较大的比重&#xff0c;这一系列的数据不仅表明着近…

Kafka【五】Buffer Cache (缓冲区缓存)、Page Cache (页缓存)和零拷贝技术

【1】Buffer Cache (缓冲区缓存) 在Linux操作系统中&#xff0c;Buffer Cache&#xff08;缓冲区缓存&#xff09;是内核用来优化对块设备&#xff08;如磁盘&#xff09;读写操作的一种机制&#xff08;故而有一种说法叫做块缓存&#xff09;。尽管在较新的Linux内核版本中&a…

联众优车持续加大汽车金融服务投入与创新,赋能汽车消费新生态

近年来&#xff0c;中国汽车消费市场呈现出蓬勃发展的态势&#xff0c;而汽车金融服务作为降低购车门槛、优化购车体验的重要手段&#xff0c;正日益受到市场的青睐。《2023中国汽车消费趋势调查报告》显示&#xff0c;相较于前一年&#xff0c;今年选择汽车金融服务的市场消费…

实战docker第二天——cuda11.8,pytorch基础环境docker打包

在容器化环境中打包CUDA和PyTorch基础环境&#xff0c;可以将所有相关的软件依赖和配置封装在一个Docker镜像中。这种方法确保了在不同环境中运行应用程序时的一致性和可移植性&#xff1a; Docker&#xff1a;提供了容器化技术&#xff0c;通过将应用程序及其所有依赖打包在一…

天然药物化学史话:甾体化合物-文献精读45(甾体化合物化学历史综述-地表最强综述系列-45)

天然药物化学史话:甾体化合物&#xff0c;极好的一篇综述&#xff0c;地表最强综述系列-45 摘要 甾体化合物是一类重要的天然产物,在人类发展史上不仅为人类的健康做出了特殊的贡献,而且其立体结构的特殊性方面也在有机化学发展史,特别是有机化学理论上占有极其重要的地位,完善…

如何为 DigitalOcean 静态路由操作员设置故障转移

静态路由操作器的主要目的是提供更大的灵活性&#xff0c;并在 Kubernetes 环境中控制网络流量。它使你能够根据应用程序的需求自定义路由配置&#xff0c;从而优化网络性能。该操作器作为 DaemonSet 部署&#xff0c;因此将在你的 DigitalOcean Managed Kubernetes 集群的每个…

6.2高斯滤波

目录 实验原理 示例代码1 运行结果1 示例代码2 运行结果2 实验代码3 运行结果3 实验原理 在OpenCV中&#xff0c;高斯滤波&#xff08;Gaussian Filtering&#xff09;是一种非常常用的图像平滑处理方法。它通过使用一个高斯核&#xff08;即高斯分布函数&#xff09;对…