700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 输入字符串 "I am a student" 则输出 "student.a am I " 。

输入字符串 "I am a student" 则输出 "student.a am I " 。

时间:2021-04-23 01:11:06

相关推荐

输入字符串 "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 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 <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;}};

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。