Java如何按给定模式反转字符串?求正确实现逻辑
按指定规则反转字符串的Java实现逻辑
核心规则拆解
- 输出单词的顺序完全由给定的pattern决定,pattern中的每个数字对应原字符串中单词的位置(从1开始计数)
- 每个取出的原单词需要单独做字符反转,再按pattern顺序拼接
实现步骤
- 输入预处理:将输入的原字符串按空格分割为单词数组,可用
split("\\s+")处理多空格场景,得到的数组下标从0开始,后续取词时需将pattern数字减1对应到数组下标 - pattern处理:将pattern序列按空格分割转为整数数组,存储取词的顺序
- 单词反转拼接:遍历pattern整数数组,依次取出对应位置的原单词,用
new StringBuilder(单词).reverse().toString()完成单个单词的字符反转,将所有反转后的单词用空格拼接得到最终结果
可运行代码示例
public class ReverseStringByPattern { public static void main(String[] args) { // 示例1测试 String input = "A dead fox found in the forest"; int[] pattern = {7,5,6,4,3,1,2}; System.out.println(getResult(input, pattern)); } public static String getResult(String input, int[] pattern) { // 分割原字符串为单词数组 String[] words = input.split("\\s+"); StringBuilder result = new StringBuilder(); for (int pos : pattern) { // pattern是1开头,转成数组0开头的下标 String originWord = words[pos - 1]; // 反转单词 String reversedWord = new StringBuilder(originWord).reverse().toString(); result.append(reversedWord).append(" "); } // 去掉末尾多余的空格 return result.toString().trim(); } }
效果验证
示例1输入运行代码后输出为tserof ni eht dnuof xof A daed,和题目给出的示例输出完全一致。
内容的提问来源于stack exchange,提问作者user17257777
相关产品推荐
相关产品推荐

