Java 串的反转

Java 串的反转,java,reverse,Java,Reverse,我有一个字符串作为苹果->球->猫->狗,并想扭转它作为狗->猫->球->苹果。可以通过在每个'->'处拆分字符串,然后添加每个元素作为数组,然后反转数组,然后添加箭头来完成。但有没有更快的办法?使用java逆转它的最快方法是什么?不要使用标记化。您可以尝试StringBufferreverse方法: String input = "A->B->C->D"; input = input.replace("->", "-"); input = new StringBuffe

我有一个字符串作为苹果->球->猫->狗,并想扭转它作为狗->猫->球->苹果。可以通过在每个'->'处拆分字符串,然后添加每个元素作为数组,然后反转数组,然后添加箭头来完成。但有没有更快的办法?使用java逆转它的最快方法是什么?

不要使用标记化。您可以尝试
StringBuffer
reverse方法:

String input = "A->B->C->D";
input = input.replace("->", "-");
input = new StringBuffer(input).reverse().toString();
input = input.replace("-", "->");
System.out.println(input);
这将按正确的顺序保存->:

input: "A->B->C->D"
output: "D->C->B->A"
祝你好运

[编辑]:


好的,首先您没有提到您的字符串可能包含除单个字符以外的其他字符。因此,上述答案无法满足您的需求。但是,如果字符串中有唯一的名称,可以使用这种方法,用单个字符替换每个名称,这样就可以了。但我不确定它是否比您自己的解决方案(标记为数组并反转数组)更好

如果每个箭头后面只有一个字符,那么使用
replaceAll(“->”,“”)
可能会更快,这样您就可以去掉所有的箭头,反转得到的字符串(如果您没有删除
->
,您显然也会反转箭头),然后在每个字符后面添加箭头。话虽如此,它的性能范围可能不会有太大变化,而且它不能处理超过1个字符的字符串,因此我将坚持您最初的计划。

要获得更好的性能,请使用此选项。我假设您的
A、B、C、D
是字面上的字符,那么您可以利用字符串中的位置。只需将字符串转换为StringBuilder并执行以下操作

StringBuilder sb = new StringBuilder("A->B->C->D");
int len = sb.length();
for (int i = 0; i < len / 2; i+=3) {
  int j = len - (i + 1);
  char temp = sb.charAt(i);
  sb.setCharAt(i, sb.charAt(j));
  sb.setCharAt(j, temp);
}
System.out.print(sb.toString());
StringBuilder sb=新的StringBuilder(“A->B->C->D”);
int len=sb.length();
对于(int i=0;i
所有条目都是单个字符吗?没有条目是名称不是单个字符这些不是单个字符。这些都是各个城市的名字,对不起,我忘了提到它不是一个字。我已经编辑了这个问题。