zoukankan      html  css  js  c++  java
  • 字符串面试题:将句子的单词序倒置

    将一句话里的单词进行倒置,标点符号不倒置。比如一句话:i come from beijing.倒置后变成:beijing. from come i。

    解析:解决该问题可以分为两步:第一步全盘置换该语句成:.gnijieb morf emoc i。第二步进行部分翻转,如果不是空格,则开始翻转单词。

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 
     5 void reverseSentence(char *str)
     6 {
     7     int i, len, begin, end;
     8     char tmp; // 缓存翻转的字符
     9 
    10     len = strlen(str);//读取字符串的长度
    11     // 第一步:全盘翻转
    12     begin = 0;
    13     end = len - 1;
    14     while (end > begin){
    15         tmp = str[begin];
    16         str[begin++] = str[end];
    17         str[end--] = tmp;
    18     }
    19     // 第二步:进行部分翻转,只翻转单词的顺序
    20     i = 0;
    21     while (i < len){
    22         if (str[i] != ' '){
    23             begin = i; // 单词起始位置
    24             while (str[i] != '' && str[i] != ' ') i++;// 寻找单词结束位置
    25             end = i - 1;// i指向空格位置
    26         }
    27         // 部分翻转
    28         while (end > begin){
    29             tmp = str[begin];
    30             str[begin++] = str[end];
    31             str[end--] = tmp;
    32         }
    33         i++;// 指向下一个单词
    34     }
    35 }
    36 
    37 int main(void)
    38 {
    39     char str[] = "I come from Beijing.";
    40     reverseSentence(str);
    41     printf("Reverse: %s
    ", str);
    42 
    43     return 0;
    44 }
  • 相关阅读:
    Kibana之配置文件
    Elasticsearch之集群,本地搭建集群
    支付宝支付流程
    AJAX应用的五个步骤
    位运算
    微信小程序页面传值详解
    面向对象三大基本特性,五大基本原则
    rem样板
    js 数组 随机排序
    按位异或运算符
  • 原文地址:https://www.cnblogs.com/xiaomanon/p/4657058.html
Copyright © 2011-2022 走看看