QCHuangChao 发表于 2015-07-13 10:58

将单词倒序排列

会将数组里面的单词 倒序排列 例如 how old are you -> you are old how

示例程序输出结果:
the first:
How old are you !? I don't understand
the second:
understand don't I ?! you are old How

示例代码public static void main(String[] args) {
      char[] chars= new String("How old are you !? I don't understand").toCharArray();
      System.out.println("the first:");
      System.out.println(chars);
         
      reverseWords(chars);//主要方法
         
      System.out.println("the second:");
      System.out.println(chars);
    }

   
    /**
   * 会将数组里面的单词 倒序排列例如how old are you -> you are old how
   * @param chars
   */
    public static void reverseWords(char[] chars) {
      reverseChars(chars,0,chars.length-1);
      int begin = -1;
      int end = 0;
      for(int i=0;i<chars.length;i++){
            char c = chars;
            if((c>='a'&&c<='z')||(c>='A'&&c<='Z')||c=='\''){ //简单的判断了一下是否是连续的单词
                if(begin==-1){
                  begin = i;
                  end=i;
                }else{
                  end=i;
                  if(i==chars.length-1){
                        reverseChars(chars,begin,end);
                  }
                }
            }else{
                if(begin!=-1){
                  reverseChars(chars,begin,end);
                  begin=-1;
                  end=0;
                }
            }
      }
    }

    /**
   * 将char 一定范围内的 字符 倒序排列例如      hello -> olleh
   * @param chars 数组
   * @param begin 开始位置
   * @param end   结束位置
   */
    public static void reverseChars(char[] chars, int begin, int end) {
      while(end>begin){
            char c = chars;
            chars = chars;
            chars = c;
            begin++;
            end--;
      }
    }
页: [1]
查看完整版本: 将单词倒序排列