1  <?php
 2     #颠倒字符串
 3
 4     #将字符串从头和尾向中间遍历,交换位置
 5     function cstrrev(&$str, $begin, $len) {
 6         $i = $begin;
 7         $j = $begin + $len - 1;
 8         while ($i < $j) {
 9             $temp = $str[$i];
10             $str[$i] = $str[$j];
11             $str[$j] = $temp;
12             $i++;
13             $j--;
14         }
15     }
16
17     #逆转句子,但不逆转单词
18
19     #第一种方法,先将句子整个逆转,再将单词逐个逆转,复杂度为O(2n)
20     function sentence_rev(&$s) {
21         cstrrev($s, 0, strlen($s));
22         $i = 0;
23         $j = 0;
24         while ($j < strlen($s)) {
25             #遇到空格即为一个单词,将该单词逆转
26             if ($s[$j] == " " || $j == strlen($s) - 1) {
27                 cstrrev($s, $i, $j - $i);
28                 $i = $j + 1;
29             }
30             $j++;
31         }
32     }
33
34     #第二种方法,每次遇到空格即为一个单词,将该单词入栈,然后依次出栈,时间复杂度为O(n),空间复杂度为O(n),其中k为单词数
35     function sentence_rev2($s) {
36         $stack = array();
37         $word = "";
38         $i = 0;
39         while ($i < strlen($s)) {
40             if ($i == strlen($s) - 1) {
41                 $word .= $s[$i];
42                 array_push($stack, $word);
43             }
44             if ($s[$i] == " ") {
45                 array_push($stack, $word);
46                 $word = "";
47             } else {
48                 $word .= $s[$i];
49             }
50             $i++;
51         }
52
53         $sr = "";
54         while (!empty($stack)) {
55             $sr .= array_pop($stack) . " ";
56         }
57
58         return substr($sr, 0, strlen($sr) - 1);
59     }
60
61     $str = "abcdefg";
62     cstrrev($str, 0, strlen($str));
63     echo $str . "<br>";
64     $s = "I am alexis";
65     sentence_rev($s);
66     echo $s . "<br>";
67     $s2 = sentence_rev2("You are not alexis");
68     echo $s2;
69 ?>

gfedcba
alexis am I
alexis not are You

PHP 逆转字符串与逆转句子相关推荐

  1. python逆转字符串封装_Python 实现文本操作之逆转字符串

    程序要求 今天完成了第一个练习的小项目,逆转字符串--输入一个字符串,将其逆转并输出,制作了可视化的小窗口,在图形化界面下输入和输出. 程序截图: 程序代码: # _*_ coding: UTF-8 ...

  2. sqlserver中某列转成以逗号连接的字符串及逆转、数据行转列列转行

    Sql Server 列转逗号隔开的字符串 和 逆转 https://www.cnblogs.com/duanyuerui/p/7567692.html Sql server 中将数据行转列列转行(一 ...

  3. python将一个字符串反转并输出_逆转字符串—输入一个字符串,将其逆转并输出。...

    实现Python字符串反转有4种方法: 1.列表的方式: def rev(s): a = list(s) a.reverse() return (''.join(a)) a = rev('huowuz ...

  4. python——字符串练习:句子反转

    -小米-句子反转 题目描述: 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,>单词用空格分割, 单词之间只有一个空格,前>后没有空格. 比如: (1) "hello ...

  5. 【C语言】输入字符串,将字符串逆转

    此次为个人练习,若有错误或需改进敬请提出. 要求:读取一个字符串,字符串可能含有空格,将字符串逆转,原来的字符串与逆转后字符串相同,输出0,原字符串小于逆转后字符串输出-1,大于逆转后字符串输出1.例 ...

  6. 单向链表的逆转(数据结构)(c语言)

    逆转单向链表的意思是:给定你一个单向链表,一个整数n(n为要逆转的结点数),要求你把链表从头结点到第n个结点给逆转过来 图示: 给出一个单向链表,一个整数n=4.也就是要求把该链表从头结点(head- ...

  7. 渣浆泵叶轮逆转的危害,不可小觑!

    渣浆泵的工作原理是利用离心力输送渣浆泵,需要带动叶轮旋转.叶轮和泵轴的连杆通过线夹连接.为了便于叶轮的拆卸,在设计时,叶轮通过倒扣方式与泵轴连接.因此,安装新的泥浆泵后叶轮会旋转.我们在初步安装时,必 ...

  8. leetcode557. 反转字符串中的单词 III

    给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. 示例: 输入:"Let's take LeetCode contest" 输出:" ...

  9. 26. 左旋转字符串

    题目:定义字符串的左旋转操作,把字符串前面的若干个字符移动到字符串的尾部 解: 1.最笨的一种方法就是,每次将字符串左移1个位置,然后把最左边的字符放到最后,这样移动满次数就行,假设字符串长度是n,要 ...

最新文章

  1. 工业3D打印:一场仍处在初级阶段的技术革命
  2. Flex与.NET互操作(十):基于FluorineFx.Net的及时通信应用(Real-time Messaging Applications)(一)...
  3. ES6里的修饰器Decorator
  4. python二十六: 字符串颜色
  5. java afconsole_Java ——基础语法
  6. mysql判断是否为null_MySQL如何判断字段是否为null
  7. 1 CO配置-企业结构-定义-创建经营组织(Operating Concern)
  8. shell日志重定向到null
  9. HDU 3652 B-number (数位DP)
  10. 微服务架构下,DLI的部署和运维有何奥秘?
  11. 【python】Tkinter可视化窗口(三)
  12. 【GDB调试学习笔记】调试程序段错误
  13. CodeBlocks下载+界面优化+创建文件+常用快捷键
  14. 炉石兄弟 修复图腾师问题 by大神beebee102, 还有阴燃电鳗
  15. 弱网条件下基于阻抗小扰动稳定性分析,小信号模型,阻抗扫描(电容电流反馈有源阻尼),单逆变器SRF-PLL
  16. 接近开关常开开关和常闭长闭的区别?
  17. 百度基础架构部马如悦:我的Hadoop…
  18. channel的用法
  19. NGNIX在CENTEROS 下部署
  20. 使用GitBook编写文档书籍

热门文章

  1. 算法(24)-股票买卖
  2. ECC密钥结构和密码学基础
  3. FFMPEG解码多线程
  4. 什么是好的API设计? 1
  5. h264的码率控制 JVT-G012
  6. AVS高清立体视频编码器
  7. 2018.08.09洛谷P3959 宝藏(随机化贪心)
  8. R语言时间序列数据应用xts
  9. linux gtest安装
  10. 截取utf8中文字符串