如何使用java来反转字符串中n个部分的n个字符

时间:2017-09-06 12:54:15

标签: java string reverse

例如,string =“ABCDEFGH”。如果n = 2,则输出应为“BADCFEHG”;如果n = 3,则输出应为“CBAFEDHG”。 我知道我应该使用stringbuilder进行反转,但是如何将字符串拆分为n个部分然后反转每个部分呢?

3 个答案:

答案 0 :(得分:3)

我不会给你一个代码,你需要通过尝试来学习。

一步一步地执行此要求:

  1. 如何在循环中逐块读取StringString.substring(int, int)。您需要了解如何计算每个块的boundery
  2. 如何撤销String:请参阅Reverse a String in JAVA
  3. 通过混合这两个步骤来创建输出。
  4. 不要试图一次完成所有事情。找到如何分开做这两个,然后把逻辑放在一起。最后这很简单。

答案 1 :(得分:1)

String newStr="";
String oldStr = "ABCDEFGH";
for(int i =0; i<oldStr.length();i+=n) {
    if(i+n >= oldStr.length()){
       n = oldStr.length()-i;
   }
   newStr += new StringBuilder(oldStr.substring(i,i+n)).reverse().toString();
}

编辑:很抱歉错过了您的问题,这个小循环可以满足您的要求! 我们在这里做的是使oldString.length() / n次迭代将字符串分成n个部分。由于您的n可能无法分割长度,因此我们必须检查i+n是否不会大于您的单词的长度(最终创建IndexOutOfBoundsException)。如果是这种情况,我们只需设置n,以便将i添加到单词的其余部分。希望能很好地解释它。

答案 2 :(得分:0)

我已经为您提供了大部分代码但尚未完成。您必须了解我遗漏了什么,以及如何解决它以完成问题。

String originalString = someString;         //String from user
String tempString = "";                     //String used for temporary reasons
String finalString = "";                    //Your end result

int n = someNumber;                         //Number from user

//Loops through the original string, incrementing by n each time
for (int i = 0; i < originalString.length() - n; i += n)
{
    //Gives us the current substring to reverse
    tempString = originalString.substring(i, i + n);

    //Starts at end of substring and adds each char to the final string
    for (j = n - 1; j >= 0; j--)
    {
        finalString += tempString.charAt(j);
    }
}