输入字符串 "I am a student",则输出 "student.a am I " 。
题目:
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串 "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 " 。相关推荐
- 用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 ...
- 将字符串“I am a student.”逆序输出为“student. a am I”
给到一串字符"I am a student.",将其输出为"student. a am I". 整体思路为先将整个字符串逆序为 ''.tneduts a ma ...
- 输入字符串“I am a student”,要求输出字符串“student a am I”
面试题目: 输入字符串"I am a student",要求输出字符串"student a am I" #include <stdio.h> voi ...
- c语言怎么用scanf输入字母,c语言输入字符串(c语言怎么用scanf输入字符串)
但是实际操作发现我的字符串无论输入的多长多短,都是输入的什么输出的就. 在C语言中,输入输出字符串有以下两种方式:1 用scanf/printf输入输出.scanf/printf是C语言的格式化输入输 ...
- 输入一个英文句子,翻转句子中单词的顺序 例如输入“I am a student.”,则输出“student. a am I”。
package com.atguigu.java; //输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开. //为简单起见,标点符号和普通字母一样处理. //例如 ...
- C++ 笔记(36)— 接收输入字符串的几种方法
C++中常见的几种输入字符串的方法如下: std::cin.std::cin.get().std::cin.getline().std::getline().std::gets().std::getc ...
- java控制台两个字符串_java控制台输入字符串
实验要求: 1/7 1.掌握 JDK 的安装及参数配置方法,能在控制台界面使用 Java 命令进行 Java 程序的编译及运行. 2.掌握 Eclipse 软件安装方法.3.掌握在 ...... 习题 ...
- 输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和
题目描述: 输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和. 思路: 1.创建输入对象 2.输入字符串 3.利用正则将字母分离出,剩余的每一个字符串即为待统计的每一个数字,存入字符串数组 ...
- ACMNO.26 C语言-字符统计2 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
题目描述 编写一函数,由实参传来一个字符串,统计此字符串中字母.数字.空格和其它字符的个数, 在主函数中输入字符串以及输出上述结果. 只要结果,别输出什么提示信息. 输入 一行字符串 输出 统计数据, ...
最新文章
- Angular 8.0.0-beta.5 发布,Web 前端框架
- 【UIKit】表格自定义单元格(UITableViewCll)
- 请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include
- python hist 参数_关于python中plthist参数的使用详解
- BZOJ1834 [ZJOI2010]network 网络扩容
- ES6之Module的语法(2)
- 首度公开!OceanBase存储系统架构的演进历程及工程实践
- UNIDAC如何驱动MSSQL2000
- Facebook究竟是怎么抄袭Snapchat的?听听他们自己怎么说
- es6 Promise -- 封装
- Dijkstra算法详解:
- 如何成为Java高级工程师?
- 一、传统能源仍具成长性
- 华三HCL模拟器添加虚拟网卡连接外网、VMware虚拟机、实体机方法
- Android 应用页面延缓载入
- Mybatis-Plus如何使用分页
- C语言如何保存小数点后几位
- 【JAVA程序设计】(C00043)基于SSM非maven的人事管理系统
- 用python让excel飞起来 pdf_这10款良心又好用的PC小工具,让你的电脑更好用!亲测强力推荐!...
- 塞班:一场顺理成章的死亡
热门文章
- shell关闭占用某端口应用,并重启
- 哈工大计算机系统Lab4.Tiny Shell
- 【PCA、LDA降维,及模型评估(SE,SP,AUC)】
- [BZOJ 1778][Usaco2010 Hol]Dotp 驱逐猪猡
- C3P0、狂生说MySQL、: No suitable driver
- 56.com flash http://www.56.com/deux4_97177389.swf
- 第三十四篇-Palette(调色板)的使用
- __init__() takes 1 positional argument but 5 positional arguments (and 1 keyword-only argument) were
- Twitter 启动“毒丸计划”,与马斯克“拼死一战”
- 解决双硬盘下一个windows两个linux操作系统的grub引导问题