反转输入字符串,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