您的位置:首页 > 其它

每日一题--翻转单词顺序||左旋转字符串

2017-09-16 15:34 218 查看
解题思路:

翻转单词顺序:先将整个字符串翻转,再翻转各个单词

eg: I am a student. ——–> .tenduts a ma I —-> students. a am I

左旋转字符串:分成两部分:两部分分别旋转,再整体旋转得到结果

eg: abcdefg —–> bagfedc ———> cdefgab

代码:

/**问题描述:翻转单词顺序
* 输入:I am a student.
* 输出:student. a am I
* Created by lxq on 2017/9/16.
*/
public class Problem6 {
public static void main(String[] args){
Problem6 problem6 = new Problem6();
String str = "I am a Student.";
problem6.reverseSentences(str);
}
public void reverseSentences(String sentence){
if(sentence==null)
return;
//字符串数组
String[] str = sentence.split(" ");
StringBuilder builder = new StringBuilder();
for(int i=str.length-1;i>0;i--){
builder.append(str[i]+" ");
}
builder.append(str[0]);
System.out.println(builder);
}
}


public void leftString(String sentences,int index){
if(sentences==null||index>sentences.length()||index<0)
return;
String[] str = {sentences.substring(0,index),//不包含endIndex上的数字
sentences.substring(index,sentences.length())};
StringBuilder builder = new StringBuilder();
for(int i=str.length-1;i>=0;i--){
builder.append(str[i]);
}
System.out.println(builder.toString());
}


public void leftString(String sentences,int index){
if(sentences==null||index>sentences.length()||index<0)
return;
String[] str = {sentences.substring(0,index),//不包含endIndex上的数字
sentences.substring(index,sentences.length())};
StringBuilder builder = new StringBuilder();
//对子串进行旋转
for(String s:str){
builder.append(reverse(s));
}
//对整个字符串进行旋转
System.out.println(reverse(builder.toString()));
}

//对字符串进行旋转
private String reverse(String s) {
char[] chars = s.toCharArray();
for(int i=0;i<(chars.length+1)/2;i++){
char temp = chars[i];
chars[i] = chars[chars.length-1-i];
chars[chars.length-1-i] = temp;
}
return String.valueOf(chars);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: