【问题标题】:Printing reverse of any String without using any predefined function?在不使用任何预定义函数的情况下打印任何字符串的反向?
【发布时间】:2011-02-06 11:09:45
【问题描述】:

如何在不使用reverse()等任何预定义函数的情况下打印字符串java is object orientated language的反面?

【问题讨论】:

标签: java string reverse


【解决方案1】:

首先:为什么要重新发明轮子?

话虽这么说:从字符串的长度循环到 0 并连接成另一个字符串。

【讨论】:

    【解决方案2】:

    您可以递归或迭代(循环)进行。

    迭代:

     static String reverseMe(String s) {
       StringBuilder sb = new StringBuilder();
       for(int i = s.length() - 1; i >= 0; --i)
         sb.append(s.charAt(i));
       return sb.toString();
     }
    

    递归:

     static String reverseMe(String s) {
       if(s.length() == 0)
         return "";
       return s.charAt(s.length() - 1) + reverseMe(s.substring(0,s.length()-1));
     }
    

    【讨论】:

    • -1 仅针对如此明显的家庭作业发布了复制和粘贴解决方案。
    • 致反对者:请阅读指导方针:meta.stackexchange.com/questions/10811/…:“不要反对那些真诚回答家庭作业问题的人,即使他们违反了这些指导方针。”
    • @polygenelubricants 看起来大多数人都同意这是一个明显的家庭作业问题,并且指南讨论了不明显的问题。
    • 对于家庭作业问题,最好包含一些解释,以免变成Ctrl-C,Ctrl-V
    • charAt() 和 length() 是字符串函数。
    【解决方案3】:

    嗯,打印本身会建议一个预定义的函数...

    不过,据推测,您可以获取字符并手动将它们反向连接(即向后循环)。当然,你可以说 concatenation 是一个预定义的函数......所以也许是 char 数组本身。但是又一次...... 为什么

    是否允许源包含“egaugnal detatneiro tcejbo si avaj”;-p

    另外 - 请注意,如果您考虑 unicode 组合字符、代理对等,字符串反转实际上非常复杂。您应该注意大多数字符串反转机制只会处理更常见的情况,但可能会遇到 i18n。

    【讨论】:

      【解决方案4】:

      从字符串末尾到 beg 的简单遍历怎么样:

      void printRev(String str) {
       for(int i=str.length()-1;i>=0;i--)
        System.out.print(str.charAt(i));
      }
      

      【讨论】:

        【解决方案5】:

        这是最简单的解决方案:

        System.out.print("egaugnal detatneiro tcejbo si avaj");
        

        【讨论】:

        • 当人们没有正确提问时会发生这种情况。
        • 我认为 StackOverflow 应该实现笑脸 :)
        【解决方案6】:

        这是一个递归解决方案,它只是以相反的顺序打印字符串。如果你想学习递归,它应该是有教育意义的。实际上有 2 个 print 语句,我也把它弄“错了”;其中一个应该被注释掉。尝试找出哪些心理,或者只是进行实验。无论哪种方式,都可以从中学习。

        static void printReverse(String s) {
            if (!s.isEmpty()) {
                System.out.print(s.substring(0, 1));
                printReverse(s.substring(1));
                System.out.print(s.substring(0, 1));
            }
        }
        

        如果您回答这些问题,可以获得奖励积分:

        【讨论】:

          【解决方案7】:
          final String s = "123456789";
          final char[] word = s.toCharArray();
          final int l = s.length() - 2;
          final int ll = s.length() - 1;
          for (int i = 0; i < l; i++) {
              char x = word[i];
              word[i] = word[ll - i];
              word[ll - i] = x;
          }
          System.out.println(s);
          System.out.println(new String(word));
          

          您可以递归或迭代(循环)进行。

          迭代:

          static String reverseMe(String s) {
              StringBuilder sb = new StringBuilder();
              for (int i = s.length() - 1; i >= 0; --i)
                  sb.append(s.charAt(i));
              return sb.toString();
          }
          

          递归:

          static String reverseMe(String s) {
              if (s.length() == 0)
                  return "";
              return s.charAt(s.length() - 1) + reverseMe(s.substring(1));
          }
          

          Integer i = new Integer(15);
          test(i);
          System.out.println(i);
          test(i);
          System.out.println(i); 
          public static void test (Integer i) {
              i = (Integer)i + 10;
          }
          

          【讨论】:

          • return s.charAt(s.length() - 1) + reverseMe(s.substring(1));错了,应该是 return s.charAt(s.length() - 1) + reverseMe(s.substring(0,s.length()));
          【解决方案8】:
          String a="Siva";
          
          for(int i=0;i<=a.length()-1;i++){
              System.out.print(a.charAt(i));
          }
          
          for(int i = a.length() - 1; i >= 0; --i){
              System.out.println(a.charAt(i)); 
          }
          

          【讨论】:

            【解决方案9】:

            我前段时间遇到了这个问题,在回答了明显的 StringBuffer.reverse() 答案后,他们接着问:“你能否在不使用这些 API 方法的情况下反转 char 数组并在不假脱机到新的 char 数组的情况下获得结果? '

            当时我意识到我只需要遍历 char 数组的一半长度,但在解释需要进入其中的实际代码时做了一些散列(这是一个口头问题)。无论如何,我回家后尝试了一下并想出了这个:

            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);
            }
            
            }
            

            你显然可以用更少的代码来实现这一点,但我认为方法中的临时分配让代码在做什么更清楚。

            输出类似:

            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
            

            我会说,这更像是一个面试问题而不是家庭作业问题。

            【讨论】:

              【解决方案10】:
              public class ReverseString {
              
              public static void main(String [] args) {
              
                  String s = "reverse string" ;
                  String b = "";
              
                          for (int i = 0; i < s.length(); i++ ){
                               b= b + s.substring(s.length()-1-i, s.length()-i);
              
                               }
              
                           System.out.println(b);
              }
              

              【讨论】:

              • 不使用任何特定方法的最简单方法。
              • 欢迎来到stackoverflow。这与之前的建议非常相似。鉴于此线程的年龄,最好不要恢复它,除非响应提供的内容与以前的答案有显着不同。
              【解决方案11】:
              String reverse(String s) {
                int legnth = s.length();
                char[] arrayCh = s.toCharArray();
                for(int i=0; i< length/2; i++) {
                    char ch = s.charAt(i);
                    arrayCh[i] = arrayCh[legnth-1-i];
                    arrayCh[legnth-1-i] = ch;
                } 
               return new String(arrayCh);
              }
              

              【讨论】:

                【解决方案12】:
                public class StringReverse {
                    public static void main(String ar[]){
                        System.out.println(reverseMe("SRINIVAS"));
                    }
                    static String reverseMe(String s){
                        StringBuffer sb=new StringBuffer();
                        for(int i=s.length()-1;i>=0;--i){
                            sb.append(s.charAt(i));
                        }
                        return sb.toString();
                    }
                }
                

                【讨论】:

                  【解决方案13】:
                  private void rev() {
                      String st="hello";
                      String b="";
                  
                      for(int i=st.length()-1;i>=0;i--){
                          b=b+st.charAt(i);
                      }
                  
                      System.out.println("reverse:::"+b);
                  }
                  

                  【讨论】:

                    【解决方案14】:
                    import java.util.*;
                    public class Restring {
                    
                    public static void main(String[] args) {
                      String input,output;
                      Scanner kbd=new Scanner(System.in);
                      System.out.println("Please Enter a String");
                      input=kbd.nextLine();
                      int n=input.length();
                    
                      char tmp[]=new char[n];
                      char nxt[]=new char[n];
                    
                      tmp=input.toCharArray();
                      int m=0;
                      for(int i=n-1;i>=0;i--)
                      {
                          nxt[m]=tmp[i];
                          m++;
                      }
                    
                      System.out.print("Reversed String is   ");
                      for(int i=0;i<n;i++)
                      {
                          System.out.print(nxt[i]);
                      }
                    
                    }
                    

                    【讨论】:

                      【解决方案15】:
                      public class StringReverse {
                      
                          public static void main(String[] args) {
                              String s= (args[0]);
                              for (int i =s.length()-1; i >= 0; i--) {            
                                     System.out.print(s.charAt(i));    
                              }
                          } 
                      }
                      

                      打印输入的反转字符串。

                      【讨论】:

                        【解决方案16】:
                        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;
                        
                        
                            }
                        }
                        

                        【讨论】:

                          【解决方案17】:
                          String x = "stack overflow";
                          String reversed = "";
                          for(int i = x.length()-1 ; i>=0; i--){
                              reversed = reversed+ x.charAt(i);
                          }
                          System.out.println("reversed string is : "+ reversed);
                          

                          【讨论】:

                            【解决方案18】:
                            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 是:我在这里吗,世界你好

                            【讨论】:

                              【解决方案19】:
                               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);
                              }
                              }
                              

                              【讨论】:

                                【解决方案20】:

                                试试这个:

                                public  class Test {
                                
                                    public static void main(String[] args) {
                                        String s = "welcome";   
                                    for( int i=0, j = (s.length())-1; i <= j; j-- ) {   
                                      char c=s.charAt(j);
                                      System.out.print(c);
                                    }
                                    }
                                }
                                

                                【讨论】:

                                  【解决方案21】:

                                  令人惊讶的是,大多数答案都是错误的!使用 Unicode 时。似乎没有人了解 java 在后台使用 UTF-16 进行文本编码。

                                  这是我的简单回答。

                                  static String reverseMe(String s) {
                                     StringBuilder sb = new StringBuilder();
                                  
                                     int count = s.codePointCount(0,s.length());
                                     for(int i = count - 1; i >= 0; --i)
                                       sb.append(Character.toChars(s.codePointAt(i)));
                                  
                                     return sb.toString();
                                   }
                                  

                                  【讨论】:

                                  • 使用java.text.BreakIterator的类似解决方案:stackoverflow.com/a/20279110/9636
                                  • 感谢希思边界。我并没有真正进入 Precomposed 角色(我认为大多数人都不知道他们是什么)。在上面,它无疑会破坏反转使用它们的字符串。
                                  【解决方案22】:

                                  给你: <pre></pre>

                                  public static void main (String[] args) {
                                      System.out.println(reverserString("Akshay"));
                                  }
                                  
                                  private static String reverserString(String src) {
                                      char[] sArr = src.toCharArray();
                                      char[] dArr = new char[sArr.length];
                                      for(int i=sArr.length; i>0; i--) {
                                          dArr[sArr.length-i] = sArr[i-1];
                                      }
                                  
                                      return new String(dArr);
                                  }
                                  

                                  【讨论】:

                                    【解决方案23】:
                                    public class MyStack {
                                       private int maxSize;
                                       private char[] stackArray;
                                       private int top;
                                       public MyStack(int s) {
                                          maxSize = s;
                                          stackArray = new char[maxSize];
                                          top = -1;
                                       }
                                       public void push(char j) {
                                          stackArray[++top] = j;
                                       }
                                       public char pop() {
                                          return stackArray[top--];
                                       }
                                       public char peek() {
                                          return stackArray[top];
                                       }
                                       public boolean isEmpty() {
                                          return (top == -1);
                                       }
                                       public boolean isFull() {
                                          return (top == maxSize - 1);
                                       }
                                       public static void main(String[] args) {
                                          MyStack theStack = new MyStack(10);
                                          String s="abcd";
                                          for(int i=0;i<s.length();i++)
                                          theStack.push(s.charAt(i));
                                          for(int i=0;i<s.length();i++)
                                          System.out.println(theStack.pop());
                                    
                                        }
                                    

                                    【讨论】:

                                      【解决方案24】:

                                      代码如下:

                                      public class RemoveString {
                                      
                                      public static void main(String[] args) {
                                      
                                      Scanner scanner=new Scanner(System.in);
                                      
                                      String s=scanner.next();
                                      
                                      String st="";
                                      
                                      for(int i=s.length()-1;i>=0;i--){
                                      
                                      st=st+s.charAt(i);
                                      
                                      
                                      }
                                      
                                      System.out.println(st);
                                      
                                      }
                                      
                                      }
                                      

                                      【讨论】:

                                        【解决方案25】:

                                        这是最好的解决方案

                                        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));
                                            }
                                        }
                                        

                                        }

                                        【讨论】:

                                        • 已经提供了很多方法来执行此方法。当它只是其他帖子的衍生品时,我看不出这有什么好处。
                                        【解决方案26】:
                                        public class ReverseString {
                                        
                                        public static void main(String[] args) {
                                        
                                            reverseString("HELLO");
                                        }
                                        
                                        public static String reverseString(String s){
                                            char []arr=s.toCharArray();
                                            for(int i= (arr.length)-1;i>=0;i--){
                                                System.out.print(arr[i]);
                                            }
                                            String str=String.copyValueOf(arr);
                                            return str;
                                        }
                                        

                                        【讨论】:

                                          【解决方案27】:

                                          代码如下:

                                             public class A{
                                                 public static void main(String args[]){
                                          
                                                String str="hello";
                                                for(int i=str.length()-1;i>=0;i--){
                                                  String str1=str.charAt(i);
                                                  system.out.print(str1);
                                                }
                                          
                                             }
                                          }
                                          

                                          【讨论】:

                                          • 您可能想描述是什么让这个答案正确。
                                          【解决方案28】:
                                          public class Match {
                                           void comp(String s1, String s2) {
                                              char[] charArray1 = s1.toCharArray();
                                              char[] charArray2 = s2.toCharArray();
                                          
                                              int length1 = charArray1.length;        
                                          
                                              int length2 = charArray2.length;       
                                              int flag = 0;
                                          
                                              if (length1 == length2) {
                                                  for (int i = 0; i <= length1 - 1; i++) {
                                                      if (charArray1[i] == charArray2[i]) {
                                                          System.out.println("index are matched:" + " " + charArray1[i] + " " + "in index-" + i);
                                          
                                                      } else {
                                                          flag = 1;
                                                          System.out.println("index are not matched:" + " " + charArray1[i] + " " + "in index-" + i);
                                                          System.out.println("index are not matched:" + " " + charArray2[i] + " " + "in index-" + i);                    
                                                      }
                                                  }
                                              } else {
                                                  System.out.println("Your string are not matched by length");
                                              }
                                              if (flag == 0) {
                                                  System.out.println("Your string  matched with other String");
                                              } else {
                                                  System.out.println("Your string are not matched");
                                              }
                                          }
                                          public static void main(String[] args) {
                                              java.util.Scanner sc = new java.util.Scanner(System.in);
                                              System.out.println("Enter the 1st String:");
                                              String s1 = sc.nextLine();
                                              System.out.println("Enter the 2nd string");
                                              String s2 = sc.nextLine();
                                              Match m = new Match();
                                              m.comp(s1, s2);
                                          }
                                          }
                                          

                                          【讨论】:

                                          • 虽然此答案可能是正确且有用的,但如果您 include some explanation along with it 解释它如何帮助解决问题,则最好。如果有更改(可能不相关)导致它停止工作并且用户需要了解它曾经是如何工作的,这在未来变得特别有用。
                                          【解决方案29】:
                                          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);
                                          }
                                          }
                                          

                                          【讨论】:

                                            【解决方案30】:

                                            ReverseString.java

                                            public class ReverseString {
                                                public static void main(String[] args) {
                                                    String str = "Ranga Reddy";
                                                    String revStr = reverseStr(str);
                                                    System.out.println(revStr);     
                                                }
                                            
                                                // Way1 - Recursive
                                                public static String reverseStr(String str) {
                                                    char arrStr[] = reverseString(0, str.toCharArray());
                                                    return new String(arrStr);
                                                }
                                            
                                                private static char[] reverseString(int charIndex, char[] arr) {     
                                                    if (charIndex > arr.length - (charIndex+1)) {
                                                      return arr;
                                                    }
                                            
                                                    int startIndex = charIndex;
                                                    int endIndex = arr.length - (charIndex+1);
                                            
                                                    char temp = arr[startIndex];        
                                                    arr[startIndex] = arr[endIndex];
                                                    arr[endIndex] = temp;      
                                                    charIndex++;       
                                                    return reverseString(charIndex++, arr);
                                                }
                                            
                                                // Way2
                                                private static String strReverse(String str) {
                                                    char ch[] = new char[str.length()];
                                                    for (int i = str.length() - 1, j = 0; i >= 0; i--) {
                                                        ch[j++] = str.charAt(i);
                                                    }
                                                    return new String(ch);
                                                }
                                            }
                                            

                                            【讨论】:

                                              猜你喜欢
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 2013-03-11
                                              • 2012-04-29
                                              • 2017-04-22
                                              相关资源
                                              最近更新 更多