版权声明:. https://blog.csdn.net/chushoufengli/article/details/87876476
写个函数func(str),传参str为一个字符串,实现把这个字符串语句中的单词(空格隔开的)次序逆序。比如把 I am a coder变成 coder a am I,不允许使用正则,reverse,join,substr,split,find,append,indexOf等系统库函数
import java.util.Scanner;
public class test {
public static String fun(String str) {
if(str == null || "".equals(str))
return "";
char strChar[] = str.toCharArray();
reverse(strChar, 0, str.length() - 1); //反转整个字符串
int startIndex = 0;
for(int i = 0; i < str.length(); i++) { //反转每个单词
if(strChar[i] == ' ' || i == str.length() - 1) {
if(i == str.length() - 1) reverse(strChar, startIndex, i);
else reverse(strChar, startIndex, i - 1);
startIndex = i + 1;
}
}
return String.valueOf(strChar);
}
public static void reverse(char[] strChar, int start, int end) {
while(start < end) {
char temp = strChar[start];
strChar[start] = strChar[end];
strChar[end] = temp;
start ++;
end --;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入");
String str = sc.nextLine();
sc.close();
System.out.println(fun(str));
}
}
//ab cd ef
//ef cd ab
剑指offer等一些的面试算法题还是有用的~
另解,使用了库函数:
import java.util.Scanner;
public class test {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String n = sc.nextLine();
String str[]=n.split(" ");
for(int i=str.length-1;i>0;i--)
System.out.print(str[i]+" ");
System.out.println(str[0]);
}
}
最终还是挂了,所以求解更简单的方法。
反思自己以前局限于会写就行,到外面人家是效率最高。环境因素固然有,主要还是自身,有时候就是自己做的不够,没有认真要求自己