Java 反转输入字符串,o/p中的单词需要根据输入中每个关键字的长度用空格隔开
例如:Java 反转输入字符串,o/p中的单词需要根据输入中每个关键字的长度用空格隔开,java,string,reverse,Java,String,Reverse,例如: subex is in bangalore o/p: 我尝试使用StringBuffer来使用reverse方法,但这只是简单地反转句子。我需要在输入的相同位置,在倒转的句子中添加空格 我认为在这种情况下没有简单的方法。您需要逐个处理每个字符 StringBuilder builder = new StringBuilder(input.length()); int end = input.length() - 1; for(int i = 0; i < input.leng
subex is in bangalore
o/p:
我尝试使用
StringBuffer
来使用reverse方法,但这只是简单地反转句子。我需要在输入的相同位置,在倒转的句子中添加空格 我认为在这种情况下没有简单的方法。您需要逐个处理每个字符
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();
StringBuilder=新的StringBuilder(input.length());
int end=input.length()-1;
对于(int i=0;i
试试这个:
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");
}
}
公共类测试
{
静态无效反向限制(字符串输入字符串)
{
char[]inputArray=inputString.toCharArray();
char[]resultArray=新字符[inputArray.length];
//在所需位置插入空格
for(int i=0;i”+String.valueOf(resultArray));
}
公共静态void main(字符串[]args)
{
反向限制(“subex位于班加罗尔”);
}
}
输出:
subex位于班加罗尔-->erola gn ab nisixebus
步骤1:存储空格位置
步骤2:删除给定字符串中的所有空格
步骤3:反转字符串
步骤4:在之前存储的位置添加空白字符。其他方法,使用
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);
}
你也可以试试这个
公共静态void main(字符串[]args){
StringBuilder sb=新StringBuilder(“subex位于班加罗尔”);
StringBuilder sb1=新的StringBuilder();
字符a[]=sb.toString().toCharArray();
字符b[]=(sb.reverse().toString()).replaceAll(“,”).toCharray();
对于(int i=0,j=0;i普通字符数组交换方式
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
String input=“subex在班加罗尔”;
char[]数组=input.toCharArray();
int len=array.length-1;
对于(int idx1=0,rev=0,idx2=len-rev;idx1
这里缺少一些边界检查。另外,nit:使用input.length()
实例化生成器,这样它就不必调整其内部字符数组的大小。@AndyTurner您指的是end
的边界,我想没有必要:)谢谢input.length()
btw.result将在末尾包含一个额外的空格,可以通过trim()轻松删除该空格。`result.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