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 }
  • 相关阅读:
    主机无法ping通网关,但可以ping通局域网内的其他主机
    linux下安装mysql
    国内python源
    在vue中引入element-ui时报错
    在windows上部署vue
    linux上部署vue开发环境
    vue插件之vue-router路由基本使用
    vue监听属性变化
    vue过滤器
    vue组件的使用
  • 原文地址:https://www.cnblogs.com/xiaomanon/p/4657058.html
Copyright © 2011-2022 走看看