62,614
社区成员
发帖
与我相关
我的任务
分享
/**
* 要求:将一个英文句子反转, e.g. much. very you love I => I love you very much.
* 但不能使用String的库函数:split,indexOf,lastIndexOf,subString
*
*/
import static java.lang.System.out;
class StringReverse {
public static boolean isBlank(char c) {
return (c == ' ' || c == '\t' || c == '\r' || c == '\n');
}
public static String sentenceReverse(String src) {
if(src == null)
return null;
char[] contents = src.toCharArray();
final int length = contents.length;
if(length < 2)
return src;
char[] res = new char[length];
int startPos = -1, endPos = -1, destCursor=0;
boolean blankState = true;
for(int srcCursor=length-1; srcCursor>=0; srcCursor--) {
if(isBlank(contents[srcCursor])) {
if(!blankState) {
for(int i=endPos; i<=startPos; i++)
res[destCursor++] = contents[i];
blankState = true;
}
res[destCursor++] = contents[srcCursor];
}
else {
if(blankState) {
blankState = false;
endPos = startPos = srcCursor;
}
else
endPos--;
}
}
if(!blankState) {
for(int i=endPos; i<=startPos; i++)
res[destCursor++] = contents[i];
}
return String.valueOf(res);
}
}
public class Test
{
public static void main(String[] args) {
out.println(StringReverse.sentenceReverse("much. very you love I"));
}
}
import static java.lang.System.out;
class StringReverse {
public static boolean isBlank(char c) {
return (c == ' ' || c == '\t' || c == '\r' || c == '\n');
}
public static String sentenceReverse(String src) {
if(src == null)
return null;
char[] contents = src.toCharArray();
final int length = contents.length;
if(length < 2)
return src;
char[] res = new char[length];
int startPos = -1, endPos = -1, destCursor=0;
boolean blankState = true;
for(int srcCursor=length-1; srcCursor>=0; srcCursor--) {
if(isBlank(contents[srcCursor])) {
if(!blankState) {
for(int i=endPos; i<=startPos; i++)
res[destCursor++] = contents[i];
endPos = -1;
blankState = true;
}
res[destCursor++] = contents[srcCursor];
}
else {
if(blankState) {
blankState = false;
endPos = startPos = srcCursor;
}
else
endPos--;
}
}
if(endPos >= 0) {
for(int i=endPos; i<=startPos; i++)
res[destCursor++] = contents[i];
}
return String.valueOf(res);
}
}
public class Test
{
public static void main(String[] args) {
out.println(StringReverse.sentenceReverse("much. very you love I"));
}
}
public static String reverse(String s)//句子反转单词之间是空格,保持单词间空格原样
{
int pos=0;
StringBuilder sb=new StringBuilder();
for(int i=0;i<s.length();i++)
{
char c=s.charAt(i);
if(c==' ')
{
pos=0;
}
sb.insert(pos, c);
if(c!=' '){pos++;}
}
return sb.toString();
}
public class ReversalWords {
/**
*
* @author 流浪的鱼
* @version 1.0
*
*/
public static String doReversal(String str) {
char[] c = str.toCharArray();
String result = "";
StringBuffer sb = new StringBuffer();
for (int i = c.length - 1; i >= 0; i--) {
if (c[i] != ' ') {
sb.append(c[i]);
}
if (c[i] == ' ' || i == 0) {
result = result + sb.reverse().toString();
if (i != 0)
result += " ";
sb.delete(0, sb.length());
}
}
return result;
}
public static void main(String[] args) {
System.out.println(doReversal("much. very you love I"));
}
}