反转输入字符串,o/p 中的单词需要根据输入中每个关键字的长度与 space 分开
Reverse a input String and words in o/p need to be separate with space as per length of each keyword in input
例如:
subex is in bangalore
o/p:
erola gn ab nisixebus
我试过使用StringBuffer
来使用反转的方法,但这只是简单地反转句子。我需要在输入的相同位置将白色 space 添加到反向句子中。
我认为在这种情况下没有简单的方法。您需要一个一个地处理每个字符。
StringBuilder builder = new StringBuilder(input.length());
int end = input.length() - 1;
for(int i = 0; i < input.length(); i++){
if(input.charAt(i) == ' '){
builder.append(' ');
}else{
while(input.charAt(end) == ' ')
end--;
builder.append(input.charAt(end--));
}
}
return builder.toString();
试试这个:
public class test
{
static void reverseString(String inputString)
{
char[] inputArray = inputString.toCharArray();
char[] resultArray = new char[inputArray.length];
//insert spaces at required positions
for (int i = 0; i < inputArray.length; i++)
{
if (inputArray[i] == ' ')
{
resultArray[i] = ' ';
}
}
int j = resultArray.length-1;
//copy every non-space character of inputArray at 'j' position of resultArray
for (int i = 0; i < inputArray.length; i++)
{
if (inputArray[i] != ' ')
{
//If resultArray already has space at index j then decrementing 'j'
if(resultArray[j] == ' ')
{
j--;
}
resultArray[j] = inputArray[i];
j--;
}
}
System.out.println(inputString+" ---> "+String.valueOf(resultArray));
}
public static void main(String[] args)
{
reverseString("subex is in bangalore");
}
}
输出:
subex is in bangalore ---> erola gn ab nisixebus
第一步:存储空格的位置。
第 2 步:删除给定字符串中的所有空格。
第 3 步:反转字符串
第四步:在之前存储的地方添加空白字符。
其他方式,使用StringBuilder.reverse()
方法:
String input = "subex is in bangalore";
StringBuilder result = new StringBuilder(input.replace(" ", "")).reverse();
int index = input.indexOf(" ");
while (index >= 0) {
result.replace(index, index, " ");
index = input.indexOf(" ", index + 1);
}
你也可以试试这个..
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("subex is in bangalore");
StringBuilder sb1 = new StringBuilder();
char a[] = sb.toString().toCharArray();
char b[] = (sb.reverse().toString()).replaceAll(" ", "").toCharArray();
for(int i = 0, j=0; i<sb.toString().length();i++, j++){<br>
如果(a[i]==''){
sb1.append(" ");
j--;
}
别的
sb1.append(b[j]);<br>
如果 (j==b.length-1)
休息;
}
System.out.println(sb1.toString().trim());
}
普通的字符数组交换方式,
String input = "subex is in bangalore";
char[] array = input.toCharArray();
int len = array.length - 1;
for(int idx1 = 0, rev = 0, idx2 = len - rev; idx1 < idx2; idx1++, rev++, idx2 = len - rev) {
if(array[idx1] == ' ')
++idx1;
if(array[idx2] == ' ')
--idx2;
char c = array[idx1];
array[idx1] = array[idx2];
array[idx2] = c;
}
System.out.println(array); // o/p: erola gn ab nisixebus
例如:
subex is in bangalore
o/p:
erola gn ab nisixebus
我试过使用StringBuffer
来使用反转的方法,但这只是简单地反转句子。我需要在输入的相同位置将白色 space 添加到反向句子中。
我认为在这种情况下没有简单的方法。您需要一个一个地处理每个字符。
StringBuilder builder = new StringBuilder(input.length());
int end = input.length() - 1;
for(int i = 0; i < input.length(); i++){
if(input.charAt(i) == ' '){
builder.append(' ');
}else{
while(input.charAt(end) == ' ')
end--;
builder.append(input.charAt(end--));
}
}
return builder.toString();
试试这个:
public class test
{
static void reverseString(String inputString)
{
char[] inputArray = inputString.toCharArray();
char[] resultArray = new char[inputArray.length];
//insert spaces at required positions
for (int i = 0; i < inputArray.length; i++)
{
if (inputArray[i] == ' ')
{
resultArray[i] = ' ';
}
}
int j = resultArray.length-1;
//copy every non-space character of inputArray at 'j' position of resultArray
for (int i = 0; i < inputArray.length; i++)
{
if (inputArray[i] != ' ')
{
//If resultArray already has space at index j then decrementing 'j'
if(resultArray[j] == ' ')
{
j--;
}
resultArray[j] = inputArray[i];
j--;
}
}
System.out.println(inputString+" ---> "+String.valueOf(resultArray));
}
public static void main(String[] args)
{
reverseString("subex is in bangalore");
}
}
输出:
subex is in bangalore ---> erola gn ab nisixebus
第一步:存储空格的位置。
第 2 步:删除给定字符串中的所有空格。
第 3 步:反转字符串
第四步:在之前存储的地方添加空白字符。
其他方式,使用StringBuilder.reverse()
方法:
String input = "subex is in bangalore";
StringBuilder result = new StringBuilder(input.replace(" ", "")).reverse();
int index = input.indexOf(" ");
while (index >= 0) {
result.replace(index, index, " ");
index = input.indexOf(" ", index + 1);
}
你也可以试试这个..
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("subex is in bangalore");
StringBuilder sb1 = new StringBuilder();
char a[] = sb.toString().toCharArray();
char b[] = (sb.reverse().toString()).replaceAll(" ", "").toCharArray();
for(int i = 0, j=0; i<sb.toString().length();i++, j++){<br>
如果(a[i]==''){
sb1.append(" ");
j--;
}
别的
sb1.append(b[j]);<br>
如果 (j==b.length-1)
休息;
}
System.out.println(sb1.toString().trim());
}
普通的字符数组交换方式,
String input = "subex is in bangalore";
char[] array = input.toCharArray();
int len = array.length - 1;
for(int idx1 = 0, rev = 0, idx2 = len - rev; idx1 < idx2; idx1++, rev++, idx2 = len - rev) {
if(array[idx1] == ' ')
++idx1;
if(array[idx2] == ' ')
--idx2;
char c = array[idx1];
array[idx1] = array[idx2];
array[idx2] = c;
}
System.out.println(array); // o/p: erola gn ab nisixebus