描述(笔试题目不是下面描述的,但是题型意思和下面描述差不多)
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
数据范围:1 \le n \le 100 \1≤n≤100
进阶:空间复杂度 O(n) \O(n) ,时间复杂度 O(n) \O(n) ,保证没有只包含空格的字符串
示例1
输入:
"nowcoder. a am I"
复制返回值:
"I am a nowcoder."
复制
import java.util.*;
public class exam1 {
public String reverseWords(String s,int start,int end){
String [] temp=s.split("\\p{Space}");
String result = "";
int i=0;
for(i=0;i<temp.length;i++)
{
//System.out.println("debug元素单词"+temp[i]);}
if(end==temp.length-1 && start<=0)
for(i=end;i>=0;i--) result=result+temp[i]+' ';
else if(end<=temp.length-1&start>0&&end>=start)
for(i=end;i>=start;i--) result=result+temp[i]+' ';
else
result=null;
}
return result;
}
public static void main(String[] args) {
String s = null,reversewords=null;
exam1 exam=new exam1();
int start = 0,end = 0;
Scanner words = new Scanner(System.in);
s=words.nextLine();
Scanner instart = new Scanner(System.in);
start = instart.nextInt();
Scanner inend = new Scanner(System.in);
end = inend.nextInt();
System.out.println("input"+s+"start:"+start+" end:"+end);
reversewords=exam.reverseWords(s,start,end);
if(reversewords==null)
System.out.println("翻转区间无效,不做翻转!请检查输入的字符串合法性或翻转区间的合法性");
else
{System.out.println("翻转前字符串是"+s);
System.out.println("翻转后字符串是"+reversewords);
}
}
}