反转句子

版权声明:. 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]);
	    }
}

最终还是挂了,所以求解更简单的方法。

反思自己以前局限于会写就行,到外面人家是效率最高。环境因素固然有,主要还是自身,有时候就是自己做的不够,没有认真要求自己

猜你喜欢

转载自blog.csdn.net/chushoufengli/article/details/87876476