您的位置:首页 > 其它

String——反转单词顺序VS左旋字符串

2016-05-12 16:16 441 查看
题目一:反转单词顺序

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--;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: