我有一个字符串作为Apple-> Ball-> Cat-> Dog并希望将其反转为Dog-> Cat-> Ball-> Apple。可以通过在每个' - >'处拆分字符串来完成然后添加每个元素是一个数组,然后反转数组,然后添加箭头。但有没有更快的方法呢?使用java来反转它的最快方法是什么?
答案 0 :(得分:5)
不要使用标记化。您可以尝试StringBuffer
反向方法:
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"
祝你好运;
<强> [编辑]:强>
好的,首先你没有提到你的String可能包含非单个字符。所以上面的答案无法满足你的需求。但是如果你的字符串中有唯一的名字,你可以用这种方式用一个字符替换每个名字并且它有效。但我不确定它会比你自己的解决方案更好(Tokenize到一个数组并反转数组)。
答案 1 :(得分:0)
为了更好的性能,请使用此功能。我假设您的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());
答案 2 :(得分:-1)
如果每个箭头后面只有一个字符,使用replaceAll("->", "")
可能会更快,这样你就可以摆脱所有箭头,反转你得到的字符串(如果你没有删除{ {1}}你明显反转箭头,然后在每个角色后添加箭头。据说它可能在性能范围上没有太大变化,并且它不适用于长度超过1个字符的字符串,所以我会坚持原来的计划。