翻转单词顺序&左旋转字符串
来源:互联网 发布:移动数据什么意思 编辑:程序博客网 时间:2024/05/21 09:14
一.翻转单词顺序
题目:
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串“I am a student.”,则输出 “student. a am I”。
解题思路:
1.翻转句子中的所有字符
2.翻转每个单词中字符的顺序
java实现:
方法一:
public class Solution { public String ReverseSentence(String str) { if(str == null || str.length() <= 0 || str.trim().equals("")) return str; //翻转句子中的所有字符 str = reverseString(str, 0, str.length() - 1); //翻转每个单词中字符的顺序 int i = 0; int start = 0, end; while(i < str.length()){ if(str.charAt(i) == ' '){ end = i - 1; str = reverseString(str, start, end); start = i + 1; } if(i == str.length() - 1){ str = reverseString(str, start, i); } i ++; } return str; } public String reverseString(String str, int start, int end){ char [] ch = str.toCharArray(); int i = start; int j = end; while(i < j){ char temp = ch[i]; ch[i] = ch[j]; ch[j] = temp; i ++; j --; } return String.valueOf(ch); }}
方法二:用split()
public class Solution { public String ReverseSentence(String str) { if(str == null || str.length() <= 0 || str.trim().equals("")) //注意比较字符串要用equals return str; String res = ""; String s1 = reverseString(str); String [] s2 = s1.split(" "); for(int i = 0; i < s2.length; i ++){ if(i == s2.length - 1) res += reverseString(s2[i]); else res += reverseString(s2[i]) + " "; } return res; } public String reverseString(String str){ char [] ch = str.toCharArray(); int i = 0; int j = ch.length - 1; while(i < j){ char temp = ch[i]; ch[i] = ch[j]; ch[j] = temp; i ++; j --; } return String.valueOf(ch); }}
二.左旋转字符串
题目:
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作功能。比如输入字符串”abcdefg”和数字2,该函数将返回左旋转2位得到的结果”cdefgab”。
解题思路:
1.把字符串分成两部分,第一部分的长度为左旋转的位数,剩余的位第二部分
2.先分别翻转这两部分
3.翻转整个字符串
java实现:
方法一:
public class Solution { public String LeftRotateString(String str,int n) { if(str == null || str.length() <= 0 || n <= 0 || str.trim().equals("")) return str; str = reverseString(str, 0, n-1);//翻转第一部分 str = reverseString(str, n, str.length() - 1);//翻转第二部分 str = reverseString(str, 0, str.length() - 1);//翻转整个字符串 return str; } public String reverseString(String str, int start, int end){ int l = start, r = end; char [] ch = str.toCharArray(); while(l < r){ char tmp = ch[l]; ch[l] = ch[r]; ch[r] = tmp; l ++; r --; } return String.valueOf(ch); }}
方法二:利用substring(0,n)
public class Solution { public String LeftRotateString(String str,int n) { if(str == null || str.length() <= n) return str; String s = ""; String s1 = str.substring(0,n); String s2 = str.substring(n,str.length()); s = s2 + s1; return s; }}
阅读全文
0 0
- 左旋转字符串LeftRotateString -- 翻转单词顺序
- 翻转单词顺序VS左旋转字符串
- 翻转单词顺序 VS 左旋转字符串
- 翻转单词顺序VS左旋转字符串
- 翻转单词顺序vs左旋转字符串
- 翻转单词顺序&左旋转字符串
- 翻转单词顺序VS左旋转字符串
- 翻转单词顺序VS左旋转字符串----->“字符串翻转”
- 剑指Offer之 - 翻转单词顺序 VS 左旋转字符串
- 面试题42:翻转单词顺序VS左旋转字符串
- 剑指offer 42 - 翻转单词顺序 左旋转字符串
- 42.翻转单词顺序VS左旋转字符串
- 面试题46:翻转单词顺序VS左旋转字符串
- 翻转单词顺序 VS 左旋转字符串43
- 剑指Offer: 翻转单词顺序列、左旋转字符串
- Q42:翻转单词顺序VS左旋转字符串
- 剑指offer42-翻转单词顺序和字符串的左旋转
- 面试题42:翻转单词的顺序,左旋转字符串
- Linux下浅谈crond与crontab
- [Ceph分析]源码目录结构分析
- ubuntu开机自启动tomcat
- Spring整合Ehcache管理缓存
- 读取与保存
- 翻转单词顺序&左旋转字符串
- JAVA设计模式之单例模式
- 数据结构与算法Java版——哈夫曼树
- ToLua学习笔记,创建一个游戏对象
- 几种常用的ajax配合json数据格式向后台发送请求以及后台如何接收数据
- 微信小程序有哪些?401~500
- Linux常用命令(五)——系统安全命令(未拓展)
- 【Python】工作中自己用的一个程序,操作excel
- 3.3 Android Studio中的LogCat及其相关设置