题目:

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串 "I am a student",则输出 "student.a am I " 。

思路:

首先翻转整个字符串。产生的结果就是“.tneduts a ma i”。

翻转每一个单词。产生结果为“student. a am i”。

代码:

#include "string.h"
#include <string.h>//二维数组
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//  char a[4][10] = {"i" ,  "am" ,  "a" , "student" };
//  for (int i = 3; i>=0; i--)
//  {
//      printf("%s ", a[i]);
//  }
//  system("pause");
//  return 0;
//}//指针数组
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//  char *str[] = { "i", "am", "a", "student" };
//  int len=strlen(str);
//  while (len >=0)
//  {
//      printf("%s ", *(str +(len--)));
//  }
//  system("pause");
//  return 0;
//}#if 0
void reserve(char arr[], int start, int end)
{while (start < end){char tmp = arr[start];arr[start] = arr[end];arr[end] = tmp;start++;end--;}return;
}
void reserve_str(char str[], int len)
{int i = 0;int start = 0;int end = 0;reserve(str, 0, len - 1);  //整体反转while (i <= len){if (SPACE==str[end] || END==str[end]){reserve(str, start, end - 1);//反转每个单词,[start, end - 1]start = ++end;              //下一个单词}else{end++;}i++;}return;
}
#endifvoid reverse(char *Left, char *Right)
{if (Left != 0 || Right != 0){while (Left < Right){char Tmp = *Left;*Left = *Right;*Right = Tmp;++Left;--Right;}}return;
}void reserve_str(char str[], int len)
{if (SPACE == *str)return;reverse(str, str + len - 1);//整体逆置char *pCur = str;while (END!=*str){if (SPACE == *str || END == *str){reverse(pCur, str - 1);//单词逆置pCur = ++str;                   }else{str++;}}return;
}
#ifndef STRING_H
#define STRING_H
#include <stdio.h>
#include<stdlib.h>
#include<string.h>#define NUM 100
#define SPACE ' '
#define END '\0'void reserve_str(char str[], int len);#endif
#include"string.h"
#include<windows.h>
#include <string.h>
int main()
{char str[NUM] = "i am a student";printf("Enter a string:%s\n", str);reserve_str(str, strlen(str));printf("Reverse a string:%s\n", str);system("pause");return 0;
}

OJ代码:

class Solution {
public://交换位置void reverse(string &str,int begin,int end){while(begin<end){char tmp=str[begin];str[begin]=str[end];str[end] = tmp;begin++;end--;}}string ReverseSentence(string str) {int len=str.length();//整体翻转reverse(str,0,len-1);int i=0;int begin=0;//定义一个开始位置int end=0;//定义一个单词的结束位置while(i<len){//把前面的空格都去掉while(i < len && str[i] == ' '){i++;}    begin=end=i;while(i<len&&str[i]!=' '){i++;end++;} //单词翻转reverse(str,begin,end-1);}return str;}
};

输入字符串 "I am a student",则输出 "student.a am I " 。相关推荐

  1. 用Java实现I am a student逆序输出为student a am I,不借助split方法和StringBuffer!

    用Java实现I am a student逆序输出为student a am I,不使用split方法和StringBuffer,只用最原始的数组 总体思路:先整体后局部 public class R ...

  2. 将字符串“I am a student.”逆序输出为“student. a am I”

    给到一串字符"I am a student.",将其输出为"student. a am I". 整体思路为先将整个字符串逆序为 ''.tneduts a ma ...

  3. 输入字符串“I am a student”,要求输出字符串“student a am I”

    面试题目: 输入字符串"I am a student",要求输出字符串"student a am I" #include <stdio.h> voi ...

  4. c语言怎么用scanf输入字母,c语言输入字符串(c语言怎么用scanf输入字符串)

    但是实际操作发现我的字符串无论输入的多长多短,都是输入的什么输出的就. 在C语言中,输入输出字符串有以下两种方式:1 用scanf/printf输入输出.scanf/printf是C语言的格式化输入输 ...

  5. 输入一个英文句子,翻转句子中单词的顺序 例如输入“I am a student.”,则输出“student. a am I”。

    package com.atguigu.java; //输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开. //为简单起见,标点符号和普通字母一样处理. //例如 ...

  6. C++ 笔记(36)— 接收输入字符串的几种方法

    C++中常见的几种输入字符串的方法如下: std::cin.std::cin.get().std::cin.getline().std::getline().std::gets().std::getc ...

  7. java控制台两个字符串_java控制台输入字符串

    实验要求: 1/7 1.掌握 JDK 的安装及参数配置方法,能在控制台界面使用 Java 命令进行 Java 程序的编译及运行. 2.掌握 Eclipse 软件安装方法.3.掌握在 ...... 习题 ...

  8. 输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和

    题目描述: 输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和. 思路: 1.创建输入对象 2.输入字符串 3.利用正则将字母分离出,剩余的每一个字符串即为待统计的每一个数字,存入字符串数组 ...

  9. ACMNO.26 C语言-字符统计2 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。

    题目描述 编写一函数,由实参传来一个字符串,统计此字符串中字母.数字.空格和其它字符的个数, 在主函数中输入字符串以及输出上述结果. 只要结果,别输出什么提示信息. 输入 一行字符串 输出 统计数据, ...

最新文章

  1. Angular 8.0.0-beta.5 发布,Web 前端框架
  2. 【UIKit】表格自定义单元格(UITableViewCll)
  3. 请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include
  4. python hist 参数_关于python中plthist参数的使用详解
  5. BZOJ1834 [ZJOI2010]network 网络扩容
  6. ES6之Module的语法(2)
  7. 首度公开!OceanBase存储系统架构的演进历程及工程实践
  8. UNIDAC如何驱动MSSQL2000
  9. Facebook究竟是怎么抄袭Snapchat的?听听他们自己怎么说
  10. es6 Promise -- 封装
  11. Dijkstra算法详解:
  12. 如何成为Java高级工程师?
  13. 一、传统能源仍具成长性
  14. 华三HCL模拟器添加虚拟网卡连接外网、VMware虚拟机、实体机方法
  15. Android 应用页面延缓载入
  16. Mybatis-Plus如何使用分页
  17. C语言如何保存小数点后几位
  18. 【JAVA程序设计】(C00043)基于SSM非maven的人事管理系统
  19. 用python让excel飞起来 pdf_这10款良心又好用的PC小工具,让你的电脑更好用!亲测强力推荐!...
  20. 塞班:一场顺理成章的死亡

热门文章

  1. shell关闭占用某端口应用,并重启
  2. 哈工大计算机系统Lab4.Tiny Shell
  3. 【PCA、LDA降维,及模型评估(SE,SP,AUC)】
  4. [BZOJ 1778][Usaco2010 Hol]Dotp 驱逐猪猡
  5. C3P0、狂生说MySQL、: No suitable driver
  6. 56.com flash http://www.56.com/deux4_97177389.swf
  7. 第三十四篇-Palette(调色板)的使用
  8. __init__() takes 1 positional argument but 5 positional arguments (and 1 keyword-only argument) were
  9. Twitter 启动“毒丸计划”,与马斯克“拼死一战”
  10. 解决双硬盘下一个windows两个linux操作系统的grub引导问题