【LintCode】Reverse Words in a String 翻转字符串
来源:互联网 发布:node.js 安装教程 编辑:程序博客网 时间:2024/06/05 12:07
描述:给定一个字符串,逐个翻转字符串中的每个单词。
说明
- 单词的构成:无空格字母构成一个单词
- 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括
- 如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个
样例
给出s = "the sky is blue",返回"blue is sky the"
基本思路:
1)第一趟遍历
将每个单词翻转,且去掉连续空格中多余的空格(两端空格早已去掉)。
2)第二趟遍历
将整个字符串完全翻转。
代码:
<span style="font-size:18px;">public class Solution { /** * @param s : A string * @return : A string */ public String reverseWords(String s) { // write your code //去掉首尾空格 StringBuffer sb=new StringBuffer(s.trim()); //第一趟遍历 将每个单词翻转,且去掉连续空格中多余的空格(两端空格早已去掉)。 for(int i=0;i<sb.length();){ //删除多余空格 if(i<sb.length()-1&&sb.charAt(i)==' '&&(sb.charAt(i)==sb.charAt(i+1))){ //deleteCharAt(int index); sb.deleteCharAt(i+1); i++; continue; } //将单词翻转 else if(sb.charAt(i)!=' '){ int j=i; //找到该单词最后一个字母 while(j<sb.length()&&sb.charAt(j)!=' '){ j++; } //将该单词进行翻转 //setCharAt(int index,char ch); for(int k=0;k<(j-i)/2;k++){ char c=sb.charAt(k+i); sb.setCharAt(k+i,sb.charAt(j-1-k)); sb.setCharAt(j-1-k,c); } //将下标移动到(当前单词后的空格)或下一个单词的首字母处 i=j+1; } //一个空格 else { i++; } } //第二趟遍历 将整个字符串完全翻转。 for(int i=0;i<sb.length()/2;i++){ char c = sb.charAt(i); sb.setCharAt(i,sb.charAt(sb.length()-1-i)); //这里不能直接把sb.charAt(i)当做参数写到setCharAt中,必须在前面先对i位置的字符进行获取(保存),因为上面的赋值操作 //对i位置的字符数据进行了覆盖 sb.setCharAt(sb.length()-1-i,c); } return sb.toString(); }}</span>
0 0
- 【LintCode】Reverse Words in a String 翻转字符串
- 【LintCode】Reverse Words in a String 翻转字符串
- Reverse Words in a String 翻转字符串
- 字符串-Reverse Words in a String(翻转字符串)
- 151. Reverse Words in a String 翻转字符串中的单词
- leetcode 151. Reverse Words in a String 字符串 翻转
- [Lintcode]Reverse Words in a String
- [Lintcode]Reverse Words in a String
- 151. Reverse Words in a String 字符串
- LeetCode刷题:Reverse Words in a String(翻转字符串中的单词)
- Reverse Words in a String 翻转一个字符串里的单词顺序 @LeetCode
- LeetCode OJ 之 Reverse Words in a String (翻转字符串的单词)
- leetcode151-Reverse Words in a String(翻转字符串单词的位置)
- 151.leetcode Reverse Words in a String(medium)[字符串分词翻转]
- 53.Reverse Words in a String-翻转字符串(容易题)
- LeetCode 557. Reverse Words in a String III (字符串翻转)
- Reverse Words in a String III 翻转字符串中的单词之三
- 翻转单词顺序 Reverse Words in a String
- Codeforces Round #367 (Div. 2) E. Working routine (十字链表)
- C++文件操作
- pcl可视化的那些事
- vbscript 不显示串口执行某cmd
- Linux删除创建的用户并同时删除帐户的主目录
- 【LintCode】Reverse Words in a String 翻转字符串
- spring中如何读取.properties配置文件
- 互联网协议入门(二) 作者:阮一峰
- JavaWeb如何将后台数据传递到前台页面HttpServletResponse和HttpServletRequest
- 通过DiffUtil高效更新RecyclerView
- 基于注解的测试Spring-aop通知顺序
- Hashtable源码剖析
- selenium之 文件上传所有方法整理总结
- 关于一个失败程序生涯的自省。