首页 > 试题广场 >

翻转字符串(1)

[编程题]翻转字符串(1)
  • 热度指数:3107 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定字符类型的数组chas,请在单词间做逆序调整。只要做到单词的顺序逆序即可,对空格的位置没有要求。

输入描述:
输入一行只含字母和空格的字符串,代表chas


输出描述:
输出一行字符串,代表逆转顺序后的字符串。
示例1

输入

i am a student

输出

i ma a tneduts

备注:
时间复杂度,空间复杂度
import java.util.Scanner;
public class Main {
    static String reverse(String str,int begin,int end){
        char[] arr = str.toCharArray();
        for(;begin<end;begin++,end--){
            char tmp = arr[begin];
            arr[begin] = arr[end];
            arr[end] = tmp;
        }
        return  new String(arr);
    }

    static Scanner scan = new Scanner(System.in);

    public static void main(String[] args) {
        while(scan.hasNext()){
            String input = scan.next();
            String ret = reverse(input, 0, input.length() - 1);
            System.out.print(ret);
            System.out.print(" ");
        }
    }
}
编辑于 2020-10-26 22:40:44 回复(0)
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
	    char[] arrs = scanner.nextLine().toCharArray();
        
        int length = arrs.length;
        int start = 0;
        while(start<length){
            int end = start;
            while(end<length && arrs[end] != ' '){end++;}
            for(int j=start;j<(start + end)/2;j++){
                char temp = arrs[j];
                arrs[j] = arrs[end+start-1-j];
                arrs[end+start-1-j] = temp;
            }
            start = end+1;
        }
        
        for(int i=0;i<length;i++){
            System.out.print(arrs[i]);
        }
	}
}

发表于 2019-10-17 16:40:25 回复(0)