//题目1:翻转单词顺序例如“Hello world!”翻转后为world! Hello。
//思路:首先翻转整个字符串,然后再分别翻转每个单词。
//题目2:左旋转字符串,是将字符串的前面几个(n)字符放到整个字符串的后面。例如:“helloWorld”,旋转后lloWorldhe
//思路:将字符串分成两半分别翻转,然后整个翻转。
public class ReverseWord {
//翻转一个字符串
public void reverseWord(
char[] a,
int start,
int end){
if(a==
null)
return;
while(start<
end){
swrap(a,start,end);
start++
;
end--
;
}
}
public void swrap(
char[] a,
int start,
int end) {
char temp=
a[start];
a[start]=
a[end];
a[end]=
temp;
}
//翻转单词的顺序
public void ReverseWordSequence(
char[] a){
if(a==
null)
return;
reverseWord(a,0,a.length-1
);
int start=0
;
int end=0
;
while(start<
a.length ){
if(a[start]==' '
){
start++
;
end++
;
}
else if(a[end]==' '
){
reverseWord(a,start,--
end);
start=++
end;
}
else if(end==a.length-1
){
reverseWord(a,start,end);//最后一个单词
break;
}
else
end++
;
}
}
//左旋转字符串
public void LeftReverseString(
char[] a,
int n){
if(a==
null)
return;
if(n<a.length&&n>0
){
int startFirst=0
;
int endFirst=n-1
;
int startSecond=
n;
int endSecond=a.length-1
;
reverseWord(a,startFirst,endFirst);
reverseWord(a,startSecond,endSecond);
reverseWord(a,0,a.length-1
);
}
}
public static void main(String[] args){
String s="hello world i am love!"
;
char[] a=
s.toCharArray();
ReverseWord rw=
new ReverseWord();
rw.LeftReverseString(a, a.length);
for(
char c:a)
System.out.print(c+" "
);
System.out.println();
rw.ReverseWordSequence(a);
for(
char c:a)
System.out.print(c+" "
);
System.out.println();
}
}
转载于:https://www.cnblogs.com/hupp/p/4771464.html
转载请注明原文地址: https://mac.8miu.com/read-23022.html