Printing reverse of any String without using any predefined function?

后端 未结 30 1313
生来不讨喜
生来不讨喜 2020-11-30 03:08

How to print the reverse of the String java is object orientated language without using any predefined function like reverse()?

相关标签:
30条回答
  • 2020-11-30 03:20

    I had this a while back, and having answered with the obvious StringBuffer.reverse() answer, they then asked 'Can you reverse a char array without using those API methods and achieve the result without spooling into a new char array?'

    At the time I recognised that I only needed to iterate over half the length of the char array, but made a bit of a hash of explaining the actual code that needed to go into it (it was a verbal question). Anyway, I tried it when I got home and came up with this:

    public class StringReverse {
    
    public static void main(String[] args){
    
        String a = "String";
    
        char[] aChar = a.toCharArray();
    
        for (int i = (aChar.length-1)/2 ; i >= 0 ; i--){
            int posA = i;
            int posB = (aChar.length-1-i);
            char tmpA = aChar[posA];
            char tmpB = aChar[posB];
            System.out.println("Setting " + posA + " to " + tmpB);
            System.out.println("Setting " + posB + " to " + tmpA);
    
            aChar[posA] = tmpB;
            aChar[posB] = tmpA;
        }
    
        System.out.println(aChar);
    }
    
    }
    

    You can obviously achieve this with less code, but I think the temporary assignments in the method make it more clear what the code is doing.

    Outputs something like:

    Setting 2 to i
    Setting 3 to r
    Setting 1 to n
    Setting 4 to t
    Setting 0 to g
    Setting 5 to S
    
    gnirtS
    

    More of an interview question than a homework question, I'd say.

    0 讨论(0)
  • 2020-11-30 03:20
    public String reverse(String arg)
    {
        String tmp = null;
        if (arg.length() == 1)
        {
            return arg;
        }
    
        else
        {
    
            String lastChar = arg.substring(arg.length()-1,arg.length());
    
            String remainingString = arg.substring(0, arg.length() -1);
    
            tmp = lastChar + reverse(remainingString);
            return tmp;
    
    
        }
    }
    
    0 讨论(0)
  • 2020-11-30 03:21
    public static void main(String[] args) {
    
    
        String str = "hello world here I am";
    
        StringTokenizer strToken = new StringTokenizer(str);
        int token = strToken.countTokens();
        String str1 [] = new String[token];
    
        char chr[] = new char[str.length()];
        int counter = 0;
    
        for(int j=0; j < str.length(); j++) {
    
            if(str.charAt(j) != ' ') {
                chr[j] = str.charAt(j);
            }else {
                str1[counter++] = new String(chr).trim();
                chr = new char[str.length()];
            }
        }
        str1[counter++] = new String(chr).trim();
    
        for(int i=str1.length-1; i >= 0 ; i--) {
            System.out.println(str1[i]);
        }
    }
    

    O/P is: am I here world hello

    0 讨论(0)
  • 2020-11-30 03:21
     public class ReverseWithoutStringAPI {
    
    public static void main(String[] args) {
    
          String st="hello";
    
            StringBuffer b=new StringBuffer();
    
            for(int i=st.length()-1;i>=0;i--){
    
                b.append(st.charAt(i)); }
    
            System.out.println("reverse:::"+b);
    }
    }
    
    0 讨论(0)
  • 2020-11-30 03:21
    package com.ofs;
    
    public class ReverseWordsInString{
    public static void main(String[] args) {
    
        String str = "welcome to the new world and how are you feeling ?";
    
        // Get the Java runtime
        Runtime runtime = Runtime.getRuntime();
        // Run the garbage collector
        runtime.gc();
        // Calculate the used memory
        long firstUsageMemory = runtime.totalMemory() - runtime.freeMemory();
        System.out.println("Used memory in bytes: " + firstUsageMemory);
        System.out.println(str);
        str = new StringBuffer(str).reverse().toString();
        int count = 0;
        int preValue = 0;
        int lastspaceIndexVal = str.lastIndexOf(" ");
        int strLen = str.length();
        for (int i = 0; i < strLen - 1; i++) {
            if (Character.isWhitespace(str.charAt(i))) {
                if (i - preValue == 1 && count == 0) {
                    str = str.substring(0, preValue) + str.charAt(i - 1)
                            + str.substring(i, strLen);
                    preValue = i;
                    count++;
                } else if (i - preValue == 2 && count == 0) {
                    str = str.substring(0, preValue) + str.charAt(i - 1)
                            + str.charAt(i - 2) + str.substring(i, strLen);
                    preValue = i;
                    count++;
                } else if (i - preValue == 3 && count == 0) {
                    str = str.substring(0, preValue) + str.charAt(i - 1)
                            + str.charAt(i - 2) + str.charAt(i - 3)
                            + str.substring(i, strLen);
                    preValue = i;
                    count++;
                } else if (i - preValue == 4 && count == 0) {
                    str = str.substring(0, preValue) + str.charAt(i - 1)
                            + str.charAt(i - 2) + str.charAt(i - 3)
                            + str.charAt(i - 4) + str.substring(i, strLen);
                    preValue = i;
                    count++;
                } else if (i - preValue == 5 && count == 0) {
                    str = str.substring(0, preValue) + str.charAt(i - 1)
                            + str.substring(i - 2, i - 1) + str.charAt(i - 3)
                            + str.charAt(i - 3) + str.charAt(i - 5)
                            + str.substring(i, strLen);
                    preValue = i;
                    count++;
                } else if (i - preValue == 6 && count == 0) {
                    str = str.substring(0, preValue) + str.charAt(i - 1)
                            + str.charAt(i - 2) + str.charAt(i - 3)
                            + str.charAt(i - 4) + str.charAt(i - 5)
                            + str.charAt(i - 6) + str.substring(i, strLen);
                    preValue = i;
                    count++;
                } else if (i - preValue == 7 && count == 0) {
                    str = str.substring(0, preValue) + str.charAt(i - 1)
                            + str.charAt(i - 2) + str.charAt(i - 3)
                            + str.charAt(i - 4) + str.charAt(i - 5)
                            + str.charAt(i - 6) + str.charAt(i - 7)
                            + str.substring(i, strLen);
                    preValue = i;
                    count++;
                } else if (i - preValue == 8 && count == 0) {
                    str = str.substring(0, preValue) + str.charAt(i - 1)
                            + str.charAt(i - 2) + str.charAt(i - 3)
                            + str.charAt(i - 4) + str.charAt(i - 5)
                            + str.charAt(i - 6) + str.charAt(i - 7)
                            + str.charAt(i - 8) + str.substring(i, strLen);
                    preValue = i;
                    count++;
                } else if (i - preValue == 2 && count != 0) {
                    str = str.substring(0, preValue) + str.charAt(i - 1)
                            + str.substring(i, strLen);
                    preValue = i;
                } else if (i - preValue == 3 && count != 0) {
                    str = str.substring(0, preValue + 1) + str.charAt(i - 1)
                            + str.charAt(i - 2) + str.substring(i, strLen);
                    preValue = i;
                } else if (i - preValue == 4 && count != 0) {
                    str = str.substring(0, preValue + 1) + str.charAt(i - 1)
                            + str.charAt(i - 2) + str.charAt(i - 3)
                            + str.substring(i, strLen);
                    preValue = i;
                } else if (i - preValue == 5 && count != 0) {
                    str = str.substring(0, preValue + 1) + str.charAt(i - 1)
                            + str.charAt(i - 2) + str.charAt(i - 3)
                            + str.charAt(i - 4) + str.substring(i, strLen);
                    preValue = i;
                    count++;
                } else if (i - preValue == 6 && count != 0) {
                    str = str.substring(0, preValue + 1) + str.charAt(i - 1)
                            + str.charAt(i - 2) + str.charAt(i - 3)
                            + str.charAt(i - 4) + str.charAt(i - 5)
                            + str.substring(i, strLen);
                    preValue = i;
                    count++;
                } else if (i - preValue == 7 && count != 0) {
                    str = str.substring(0, preValue + 1) + str.charAt(i - 1)
                            + str.charAt(i - 2) + str.charAt(i - 3)
                            + str.charAt(i - 4) + str.charAt(i - 5)
                            + str.charAt(i - 6) + str.substring(i, strLen);
                    preValue = i;
                    count++;
                } else if (i - preValue == 8 && count != 0) {
                    str = str.substring(0, preValue + 1) + str.charAt(i - 1)
                            + str.charAt(i - 2) + str.charAt(i - 3)
                            + str.charAt(i - 4) + str.charAt(i - 5)
                            + str.charAt(i - 6) + str.charAt(i - 7)
                            + str.substring(i, strLen);
                    preValue = i;
                    count++;
                }
                if (lastspaceIndexVal == preValue) {
                    if (strLen - lastspaceIndexVal == 2 && count != 0) {
                        str = str.substring(0, preValue + 1)
                                + str.charAt(strLen - 1);
                        preValue = i;
                    } else if (strLen - lastspaceIndexVal == 3 && count != 0) {
                        str = str.substring(0, preValue + 1)
                                + str.charAt(strLen - 1)
                                + str.charAt(strLen - 2);
                        preValue = i;
                    } else if (strLen - lastspaceIndexVal == 4 && count != 0) {
                        str = str.substring(0, preValue + 1)
                                + str.charAt(strLen - 1)
                                + str.charAt(strLen - 2)
                                + str.charAt(strLen - 3);
                        preValue = i;
                        count++;
                    } else if (strLen - lastspaceIndexVal == 5 && count != 0) {
                        str = str.substring(0, preValue + 1)
                                + str.charAt(strLen - 1)
                                + str.charAt(strLen - 2)
                                + str.charAt(strLen - 3)
                                + str.charAt(strLen - 4);
                        preValue = i;
                    } else if (strLen - lastspaceIndexVal == 6 && count != 0) {
                        str = str.substring(0, preValue + 1)
                                + str.charAt(strLen - 1)
                                + str.charAt(strLen - 2)
                                + str.charAt(strLen - 3)
                                + str.charAt(strLen - 4)
                                + str.charAt(strLen - 5);
                        preValue = i;
                        count++;
                    } else if (strLen - lastspaceIndexVal == 7 && count != 0) {
                        str = str.substring(0, preValue + 1)
                                + str.charAt(strLen - 1)
                                + str.charAt(strLen - 2)
                                + str.charAt(strLen - 3)
                                + str.charAt(strLen - 4)
                                + str.charAt(strLen - 5)
                                + str.charAt(strLen - 6);
                        preValue = i;
                    } else if (strLen - lastspaceIndexVal == 8 && count != 0) {
                        str = str.substring(0, preValue + 1)
                                + str.charAt(strLen - 1)
                                + str.charAt(strLen - 2)
                                + str.charAt(strLen - 3)
                                + str.charAt(strLen - 4)
                                + str.charAt(strLen - 5)
                                + str.charAt(strLen - 6)
                                + str.charAt(strLen - 7);
                        preValue = i;
                    }
                }
            }
        }
        runtime.gc();
        // Calculate the used memory
        long SecondaryUsageMemory = runtime.totalMemory()
                - runtime.freeMemory();
        System.out.println("Used memory in bytes: " + SecondaryUsageMemory);
        System.out.println(str);
    }
    }
    
    0 讨论(0)
  • 2020-11-30 03:22

    this is the best solution for this

    public class String_rev {
    public static void main(String[] args) {
        String str="Karan Rajput";
        int ln=str.length();
        for (int i = ln; i > 0; i--) {
            System.out.print(str.charAt(i-1));
        }
    }
    

    }

    0 讨论(0)
提交回复
热议问题