如何使用java反转n个字符串中的n个字符
问题描述:
例如,string =“ABCDEFGH”。如果n = 2,那么输出应该是“BADCFEHG”;如果n = 3,则输出应该是“CBAFEDHG”。 我知道我应该使用stringbuilder来反向,但我怎么能将字符串拆分为n部分,然后反转每个部分?如何使用java反转n个字符串中的n个字符
答
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
,这样它就可以增加我对这个词的其他部分。希望解释得很好。
答
我不会给你这个代码,你需要通过尝试来学习。在一个循环String.substring(int, int)
:
一步地执行这一要求的步骤:
- 如何读取块
String
块。您需要了解如何计算每个块 - 的boundery如何扭转
String
:看到有关Reverse a String in JAVA - 通过混合这两个步骤中创建的输出。
不要试图一劳永逸。找到如何做到这两个分离,然后把逻辑放在一起。最后这很简单。
答
我已经给你大部分的代码,但它是未完成的。您必须了解我所忽略的内容以及如何解决问题才能完成此问题。
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);
}
}
欢迎来到SO。在发布StackOverflow的问题/需求之前,你应该做一些研究。请参见[ask],然后编辑你的问题,其中包含一些你的尝试 – AxelH
[在Java中反转字符串]可能的重复(https://stackoverflow.com/questions/7569335/reverse-a-string-in-java) – pedromss
@pedromss我认为这不是一个直接的重复,这个工作N个字母组而不是单个字母 – jrtapsell