例如,string =“ABCDEFGH”。如果n = 2,则输出应为“BADCFEHG”;如果n = 3,则输出应为“CBAFEDHG”。 我知道我应该使用stringbuilder进行反转,但是如何将字符串拆分为n个部分然后反转每个部分呢?
答案 0 :(得分:3)
我不会给你一个代码,你需要通过尝试来学习。
一步一步地执行此要求:
String
:String.substring(int, int)
。您需要了解如何计算每个块的boundery String
:请参阅Reverse a String in JAVA 不要试图一次完成所有事情。找到如何分开做这两个,然后把逻辑放在一起。最后这很简单。
答案 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);
}
}