欢迎访问宙启技术站
智能推送

Java函数:如何在字符串中反转单词的顺序?

发布时间:2023-07-29 19:45:41

在Java中,我们可以使用不同的方法来反转字符串中单词的顺序。下面是几种常见的方法。

1. 使用split和StringBuilder:

我们可以首先使用split函数将字符串分割成单词数组,然后使用StringBuilder逆序追加单词到字符串中。

public static String reverseWords(String s) {
    // 分割字符串,获取单词数组
    String[] words = s.split(" ");
    
    // 使用StringBuilder逆序追加单词
    StringBuilder reverse = new StringBuilder();
    for (int i = words.length - 1; i >= 0; i--) {
        reverse.append(words[i]);
        if (i != 0) {
            reverse.append(" ");
        }
    }
    
    return reverse.toString();
}

2. 使用自定义函数:

我们也可以使用自定义函数来实现字符串中单词的逆序。

public static String reverseWords(String s) {
    // 删除字符串中多余的空格
    s = s.trim();
    
    // 使用正则表达式将多个空格替换成一个空格
    s = s.replaceAll(" +", " ");
    
    // 将字符串转为字符数组
    char[] chars = s.toCharArray();
    
    // 对字符数组进行逆序操作
    reverse(chars, 0, chars.length - 1);
    
    // 对每个单词进行逆序操作
    reverseWords(chars);
    
    // 将字符数组转为字符串
    return new String(chars);
}

private static void reverse(char[] chars, int start, int end) {
    while (start < end) {
        char temp = chars[start];
        chars[start] = chars[end];
        chars[end] = temp;
        start++;
        end--;
    }
}

private static void reverseWords(char[] chars) {
    int start = 0;
    int end = 0;
    int n = chars.length;
    
    while (start < n) {
        while (end < n && chars[end] != ' ') {
            end++;
        }
        
        reverse(chars, start, end - 1);
        
        start = end + 1;
        end++;
    }
}

3. 使用StringTokenizer:

我们也可以使用Java中的StringTokenizer类来分割字符串,并使用栈逆序输出。

import java.util.StringTokenizer;
import java.util.Stack;

public static String reverseWords(String s) {
    // 使用StringTokenizer分割字符串
    StringTokenizer tokenizer = new StringTokenizer(s);
    
    // 使用栈逆序输出单词
    Stack<String> stack = new Stack<>();
    while (tokenizer.hasMoreTokens()) {
        stack.push(tokenizer.nextToken());
    }
    
    // 构建逆序单词字符串
    StringBuilder reverse = new StringBuilder();
    while (!stack.isEmpty()) {
        reverse.append(stack.pop());
        if (!stack.isEmpty()) {
            reverse.append(" ");
        }
    }
    
    return reverse.toString();
}

以上就是几种反转字符串中单词顺序的常见方法,在实际使用中可以根据具体需求选择合适的方法来实现。