gpt4 book ai didi

java - 我如何编写一个方法来成对地切换值的顺序

转载 作者:行者123 更新时间:2023-11-29 08:23:06 24 4
gpt4 key购买 nike

我必须编写一个方法,它接受一个字符串数组作为参数,并以成对的方式切换值的顺序。

我使用了“For”循环,并添加了一个变量,而不是使用“i+1”,所以我不会越界。该代码不适用于所有情况。
请帮助我了解问题所在:)

 public static void swapPairs (String [] txt1){
for(int i=0; i<txt1.length-1; i++){
int j=1;
String word=txt1[j];
txt1[j]=txt1[i];
txt1[i]=word;
j++;
}
}





>test #1:{"four", "score", "and", "seven", "years", "ago"}
>>what should i get {"score", "four", "seven", "and", "ago", "years"}
>>>what i get:{"score", "years", "four", "and", "seven", "ago"}

最佳答案

您可以通过考虑您可能收到的不同输入情况来系统地解决这个问题。一些微不足道的情况是:

  • 案例 1:空字符串数组:[]
  • 情况 2:具有单个字符串的数组:["a"]
  • 案例 3:包含两个字符串的数组:["a", "b"]

一些稍微复杂的例子可能是:

  • 情况 4:具有奇数个字符串的数组:["a", "b", "c"]
  • 情况 5:包含偶数个字符串的数组:["a", "b", "c", "d"]

现在你可以说两个简单的案例已经涵盖了奇数和偶数的情况,但我决定包括它以展示一个更具体的例子。

让我们回顾一下我们的小示例列表,看看在调用 swapPairs 之后我们期望得到什么。

  • 案例 1:好吧,我们希望返回一个空数组,因为没有什么可交换的!
  • 情况 2:由于只有一个元素,因此我们希望返回相同的字符串数组,因为没有其他字符串可以交换。
  • 情况 3:此数组中只有一对字符串,因此我们希望交换这对字符串。我们应该返回 ["b", "a"]
  • 案例 4:现在我们的数组中有奇数个字符串,我们需要至少交换一次。在不深入研究算法的情况下,我们希望返回 ["b", "a", "c"] 因为这是唯一可能的交换并且 "c" 有没有其他字符串可以交换。
  • 案例 5:对于这种情况,我们的数组中有偶数个字符串,这告诉我们该字符串将有一个对应的字符串可以交换。我们希望返回 ["b", "a", "d", "c"]

希望通过多个示例和不同案例,您开始了解算法应该是什么样子。

让我们从案例 5 开始:["a", "b", "c", "d"]。数组中每个元素的相应索引是 [0, 1, 2, 3]。我们希望将索引 0 处的字符串与索引 1 处的字符串交换。同样,我们希望将索引 2 处的字符串与索引 3 处的字符串交换。如果我们在循环中执行此操作,您的索引增量器实际上应该增加 2 而不是 1,因为我们想跳过我们交换的元素。

如果数组中的每个字符串都有对应的字符串进行交换(即偶数个元素),情况就是如此。我们可能会遇到元素数量为奇数的情况,这意味着不会交换最后一个元素。您可能希望在实际进行交换之前执行检查以查看元素是否存在,因为错误地索引数组会给您带来 IndexOutOfBounds Exception

我会留给您完成代码,希望这能让您更深入地了解您希望如何解决问题。

关于java - 我如何编写一个方法来成对地切换值的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55800005/

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