微软算法100题10 翻转句子中单词的顺序
2015-10-23 10:48
369 查看
第10 题
翻转句子中单词的顺序。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”
思路:可以先翻转整个字符串,然后依次截取各个单词,在对单词进行翻转,目前的解决方案默认每个单词之间只有一个空格,可以考虑如果有多个空格的情况
翻转句子中单词的顺序。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”
思路:可以先翻转整个字符串,然后依次截取各个单词,在对单词进行翻转,目前的解决方案默认每个单词之间只有一个空格,可以考虑如果有多个空格的情况
package com.rui.microsoft; /** * 翻转句子中单词的顺序。 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I” */ public class Test10_ReverseStringInSentence { public static void main(String[] args) { String s = "I AM A STUDENT"; char[] ss = s.toCharArray(); reverse(ss, 0, ss.length - 1); reverseAll(ss); System.out.println(String.copyValueOf(ss)); } public static void reverse(char[] s, int start, int end){ while(start < end){ char temp = s[start]; s[start] = s[end]; s[end] = temp; start++; end--; } } public static void reverseAll(char[] sentence){ int i = 0, start = 0; while(i < sentence.length){ if(sentence[i] != ' '){ i++; }else{ reverse(sentence, start, i-1); //move pointer 'start' to the character after pointer i start = i+1; //move pointer 'i' to the next character i++; } } } }
相关文章推荐
- windows Android 开发环境
- Jquery中$.ajax()方法参数详解
- Flash中启动Linux的方法
- 打开MySQL数据库远程访问的权限
- MySql 5.6.20,安装后无法登陆的解决办法
- UVa 11900 - Boiled Eggs
- LeetCode 077 Combinations
- android 一个TextView设置多种颜色
- php获取浏览器内核版本
- 下拉列表框Spinner
- 如何将一个uiview推送到窗口的前面与背后
- PHP 性能分析第三篇: 性能调优实战
- mysql 导入导出整个库
- spring-org.springframework.beans.factory.BeanDefinitionStoreException及相关介绍
- Java 多维数组遍历
- Spring--quartz中cronExpression配置说明 (注意?说明)
- android发布时的签名过程
- 【原创】Github团队协作之Pull请求
- ORACLE的任务DBMS_JOB.SUBMIT的使用------JOB
- Linux 精萃