题目一:反转单词顺序
String.split(String regex)
根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果:
Regex
结果
:
{ "boo", "and", "foo" }
o
{ "b", "", ":and:f" } 此处发现结尾的两个"oo"间没有""
public String ReverseSentence(String str) {
if(str==null||str.trim().equals(""))
return str;
String []strs=str.split(" ");
StringBuilder sb=new StringBuilder();
for(int i=strs.length-1;i>=1;i--)
{
sb.append(strs[i]);
sb.append(" ");
}
sb.append(strs[0]);
return new String(sb);
}
题目二:左旋字符串
从分割点划分,先整体反转字符串,再分别反转前半部分和后半部分。
public class Solution {
public String LeftRotateString(String str,int n) {
if(str == null||n>=str.length())
return str;
char[]ch=str.toCharArray();
swap(ch,0,n-1);
swap(ch,n,ch.length-1);
swap(ch,0,ch.length-1);
return String.valueOf(ch);
}
public void swap(char[]ch,int begin,int end)
{
while(begin<end)
{
char temp=ch[begin];
ch[begin]=ch[end];
ch[end]=temp;
begin++;
end--;
}
}
}