博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
输入字符串 "I am a student",则输出 "student.a am I " 。
阅读量:4116 次
发布时间:2019-05-25

本文共 2165 字,大约阅读时间需要 7 分钟。

题目:

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

思路:

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

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

代码:

#include "string.h"#include 
//二维数组//#include
//#include
//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
//#include
//int main()//{// char *str[] = { "i", "am", "a", "student" };// int len=strlen(str);// while (len >=0)// {// printf("%s ", *(str +(len--)));// }// system("pause");// return 0;//}#if 0void 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 
#include
#include
#define NUM 100#define SPACE ' '#define END '\0'void reserve_str(char str[], int len);#endif
#include"string.h"#include
#include
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

 

转载地址:http://lqypi.baihongyu.com/

你可能感兴趣的文章
Android-Socket登录实例
查看>>
Android使用webservice客户端实例
查看>>
层在页面中的定位
查看>>
[转]C语言printf
查看>>
C 语言 学习---获取文本框内容及字符串拼接
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
C 语言 学习---复选框及列表框的使用
查看>>
第四章 - 程序计数器
查看>>
第七章 - 本地方法栈
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
JDBC核心技术 - 下篇
查看>>
一篇搞懂Java反射机制
查看>>
【2021-MOOC-浙江大学-陈越、何钦铭-数据结构】树
查看>>
MySQL主从复制不一致的原因以及解决方法
查看>>
RedisTemplate的key默认序列化器问题
查看>>