【问题标题】:how to reverse n characters of n parts in string using java [closed]如何使用java反转字符串中n部分的n个字符[关闭]
【发布时间】:2017-09-06 12:54:15
【问题描述】:

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

【问题讨论】:

  • 欢迎您。在 StackOverflow 上发布问题/要求之前,您应该做一些研究。请参阅How to Ask,并通过您的一些尝试编辑您的问题
  • Reverse a string in Java的可能重复
  • @pedromss 我不认为它是直接复制的,这个适用于 N 个字母组而不是单个字母

标签: java string reverse


【解决方案1】:

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

一步一步做这个要求:

  1. 如何逐块读取StringString.substring(int, int) 在循环中。您需要了解如何计算每个块的边界
  2. 如何反转String:请参阅Reverse a String in JAVA
  3. 通过混合这两个步骤来创建输出。

不要试图一次完成所有事情。找出如何分开做这两个,然后把逻辑放在一起。到头来还是很简单的。

【讨论】:

    【解决方案2】:
    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 添加到单词的其余部分。希望能很好地解释它。

    【讨论】:

    • 剩下的呢?这是不完整的,你只反转第 N 个字符的第一个块。
    • @AxelH 抱歉错过了您的问题,请查看编辑!您当然可以缩短 newString1 和 2 的声明,这样做是为了便于阅读。
    • 不是我的问题......但你仍然不正确,“ABCDEF”应该输出 2 个“BADCFE”而不是“BACDEF”的块。您需要迭代 String 来反转每个块,而不是第一个块和 String 的其余部分
    • 你们是对的,已编辑!
    • 现在,你可以向这个学习者解释你的逻辑......(并缩进你的代码)。这总是更好地提供解释。
    【解决方案3】:

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

    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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多