输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点 符号和普通字母一样处理

题目:

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点
符号和普通字母一样处理

解答:

 1 public class Solution {
 2     public static void main(String[] args) {
 3         String string = "I am a student.";
 4         reverseSentence(string);
 5     }
 6
 7     private static void reverseSentence(String str) {
 8         if(str == null) {
 9             return;
10         }
11
12         char[] arr = str.toCharArray();
13         reverse(arr, 0, arr.length-1);
14
15         int start = 0;
16         int end = 0;
17         for(int i = 0; i < arr.length; i++) {
18             if(arr[i] == ‘ ‘) {
19                 reverse(arr, start, end);
20                 end++;
21                 start = end;
22             } else if(i == arr.length) {
23                 end++;
24                 reverse(arr, start, end);
25             } else {
26                 end++;
27             }
28         }
29
30         for(char c: arr) {
31             System.out.print(c);
32         }
33     }
34
35     private static void reverse(char[] arr, int start, int end) {
36         for(int i = start, j = end; i <= j; i++,j--) {
37             char temp = arr[i];
38             arr[i] = arr[j];
39             arr[j] = temp;
40         }
41     }
42 }

原文地址:https://www.cnblogs.com/wylwyl/p/10384599.html

时间: 2024-08-16 02:01:06

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点 符号和普通字母一样处理的相关文章

动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

 1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /************************************************************************/ /*数组的结构体类型                                                    */ /*******************

删除数组元素 功能描述:有一个有序整数数组,要求输入一个数字, 在数组中查找是否有这个数,如果有,将该数从数组中删除, 要求删除后的数组仍然保持有序;

public static void main(String[] args) { int[] a={23,34,56,7,8,9}; int[] b = new int[a.length]; Scanner scan = new Scanner(System.in); System.out.println("请输入一个整数:"); int num = scan.nextInt(); boolean flag = true; int i = 0; for( ; i < a.leng

输入一个英文名字,翻转句子中单词的顺序。要求单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如,若输入“”I am a student.“”则输出“”student. a am I“”

#include <iostream>#include <cstring>#include <algorithm>using namespace std;string reverse_string(string str){ int len = str.length(); string result = ""; int pri = 0; for(int i = 0;i < len;) { while(str[i+1] != ' '&&am

hdu 1075 What Are You Talking About(给你字典,让你翻译句子,字典中查不到的单词不用翻译)

1.这是一道字典树的题,但用map也可以做 2.代码: #include<cstdio> #include<cstring> #include<iostream> #include<map> using namespace std; map<string,string> mp; char s[30100],ss[15]; int main() { scanf("%s",s); while(1) { scanf("%s

程序员面试50题(3)—翻转句子中单词的顺序[算法]

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如输入“I am a student.”,则输出“student. a am I”. 分析:由于编写字符串相关代码能够反映程序员的编程能力和编程习惯,与字符串相关的问题一直是程序员笔试.面试题的热门题目.本题也曾多次受到包括微软在内的大量公司的青睐. 由于本题需要翻转句子,我们先颠倒句子中的所有字符.这时,不但翻转了句子中单词的顺序,而且单词内字符也被翻转了.

翻转句子中单词的顺序 C语言

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开. 为简单起见,标点符号和普通字母一样处理. 例如将"I am a student"转化为"student a am I". #include <stdio.h> #include <string.h> //逆转字符串 char* Reverse(char *str, int len) { if(str == NULL || len <= 0) ret

第10题:翻转句子中单词的顺序

欢迎转载,转载请务必注明出处:http://blog.csdn.net/alading2009/article/details/44906243 第10题:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理.例如输入"I am a student.",则输出"student. a am I". 此题就是对序列求逆,正如矩阵求逆 (AB)?1=B?1A?1,AB可以是子字符串,再单独对其进行求

C语言强化(九)翻转句子中单词的顺序

这是到很常见的题目,非常简单,但你用到数据结构了吗,或者说你用对了吗? 通过这道题,你可以掌握: 如何将用户的输入,输出到控制台 如何分割字符串 如何正确使用数据结构 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变. 句子中单词以空格符隔开.标点符号和普通字母一样处理. 例如输入"I am a student.",则输出"student. a am I". 思路 一.获取字符串 首先要能够获取到用户输入的一串字符串,有两点需要注意: 1.如果使

翻转句子中单词的顺序

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理.比如输入"I love you.",输出"you. love I". 解题思路: 我们可以先翻转整个字符串,然后再翻转字符串中的每个单词.比如"I love you."翻转整个字符串后得到".uoy evol I",再翻转字符串中的每一个单词得到"you. love I".当