gpt4 book ai didi

java - 仅反转字符串中的字母并保持单词的顺序相同

转载 作者:行者123 更新时间:2023-11-30 01:40:58 25 4
gpt4 key购买 nike

我只需要反转字符串中的字母,并使用 Character.isLetter 将符号和数字保留在同一位置,并且我还需要保持反转单词的相同顺序。我的代码反转字符串并保留符号和数字,但更改单词的顺序,例如:

我的输入字符串:

a1bcd efg!h

我的输出字符串:

h1gfe dcb!a

相反,我的输出应该是:

d1cba hgf!e

class AnagramsMaker {
public static String createAnagram(String StringToReverse) {
char[] stringToChar = StringToReverse.toCharArray();
int arrayStart = 0;
int arrayEnd = stringToChar.length - 1;

while (arrayStart < arrayEnd) {
if (Character.isLetter(stringToChar[arrayStart]) && Character.isLetter(stringToChar[arrayEnd])) {
char temp = stringToChar[arrayStart];
stringToChar[arrayStart] = stringToChar[arrayEnd];
stringToChar[arrayEnd] = temp;

arrayStart++;
arrayEnd--;
}
else if (Character.isLetter(stringToChar[arrayStart]) && !Character.isLetter(stringToChar[arrayEnd])) {
arrayEnd--;
}
else if (!Character.isLetter(stringToChar[arrayStart]) && Character.isLetter(stringToChar[arrayEnd])) {
arrayStart++;
}
else {
arrayStart++;
arrayEnd--;
}
}

return String.valueOf(stringToChar);
}
}

最佳答案

按照您目前的方式,您实际上根本不需要修改您的方法,而是可以利用它来反转每个单词,而不是一次反转整个String

我将您当前的方法重命名为public static String createAnagramWord(String StringToReverse),然后创建了以下方法:

public static String createAnagram(String str) {
String anagram = "";
String [] arr = str.split(" ");

for (String s : arr) {
anagram += createAnagramWord(s) + " ";
}
return anagram;
}

我使用您当前的方法,其中包含 createAnagramWord(s)

在此方法中,请注意,我使用 "" 将传递给它的 String 拆分为空格(您也可以使用 \\s+相反,请参阅 this post ),然后使用增强的 for 循环迭代从 split 返回的数组。

for 循环内部,通过附加每个反转的单词和一个空格来创建新的 String

示例运行:

public static void main(String [] args) { 
String reverse = "a1bcd efg!h";
System.out.println(createAnagram(reverse));
}

输出:

d1cba hgf!e

注意:
在循环中附加 String 从技术上讲应该利用 StringBuilder,但是,我认为这超出了这个问题的范围,因此决定忽略它。

此外,如果由于某种原因您不想将逻辑分成两个单独的方法,则可以将此逻辑重新编写到当前方法中。

关于java - 仅反转字符串中的字母并保持单词的顺序相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60010465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com