首页 > 解决方案 > 将字母“a”的第一次出现与字母“o”的最后一次出现交换位置 Java

问题描述

任务是要求我从字符串中制作,例如“aaligatoor”,输出如下:“oaligatoar” 我找到了一个解决方案,例如:

public static String letterReplacement(final String word) {
            String o = "o";
            String a = "a";
            if (word.contains("a") && word.contains("o")) {
                return word.replaceFirst("a", "o")
                           .replaceFirst("(?s)(.*)" + 'o', "$1" + 'a');
            } else {
                return "Your word does not contain both of 'a' and 'o' letters, sorry...";
            }
        }

但这看起来很棘手,也许有人知道解决这个问题的更容易理解的方法?非常感谢您的帮助和关注。

标签: java

解决方案


找到 "a" ( String.indexOf()) 的第一个索引和 "o" ( String.lastIndexOf()) 的最后一个索引。如果两个索引都 > -1 则交换字母

就像是:

public class StackOverflow {
    public static void main(String[] args) {
        String data = "aaligatoor";

        int firstAindex = data.indexOf("a");
        int lastOindex = data.lastIndexOf("o");

        if (firstAindex > -1 && lastOindex > -1) {
            char[] letters = data.toCharArray();
            letters[firstAindex] = 'o';
            letters[lastOindex] = 'a';

            data = new String(letters);
        }
        System.out.println(data);
    }
}

结果

oaligatoar

推荐阅读