输入一个字符串,比如 ab12cd34 ef ,要求将连在一起的字母比如 ab cd ef 看成一个个小的整体并倒序输出,而非字母直接倒序,比如原字符串的输出结果是 ef21cd 43ab ,有知道怎么实现的吗,不胜感激~

解决方案 »

  1.   


    public static void main(String[] args) {
    byte[] s = "ef21cd 43ab".toLowerCase().getBytes();
    byte[] result =  new byte[ (s.length -1) * 2];
    int index = 0;
    for (int i = 0; i < s.length - 1; i++) {
    if(s[i] <97 && s[i] >= 122) continue;
    if(s[i+1] == s[i]+1){
    result[index++] = s[i+1];
    result[index++] =s[i];
    }
    }
    System.out.println(new String(result));
    }
      

  2.   

                    String a = "ab12cd34 ef";
    String b[] = a.split("\\d+");
    StringBuffer sb = new StringBuffer();
    for(int i=0;i<b.length;i++){
    System.out.println(b[i]);
    sb.append(b[i].trim());
    }
    System.out.println(sb.reverse());
      

  3.   

    楼上用StringBuffer比我用数组好,但是用StringBuilder好像更效率哦
      

  4.   

    四楼这个正则表达式a.split( "\\d+ "); 是什么意思了,???
      

  5.   

    String str=" ab12cd34 ef";
    System.out.println(new StringBuffer(str).reverse());
    这个就可以 不用for循环 建议看一下StringBuffer 的用法
      

  6.   

           public static void main(String[] agrs){
            char [] d={'a','c','g','r'};
       char c='a';
           for(int i=0;i<d.length;i++){
     
           
                 for(int j=0;j<d.length;j++) {
                    if(d[i]<d[j]){
                     c=d[j];
                         d[j]=d[i];
                       d[i]=c;       
                   }
             }
          
                }  
           System.out.println(Arrays.toString(d));
          }  
      

  7.   


    StringBuffer str = new StringBuffer("ab123cd123ef".replaceAll("\\d+", ""));
    System.out.println(str.reverse());
      

  8.   

    会用ASCII吗  ?  可以试试
      

  9.   

    很多情况没去考虑 只是写了当前这个字符串的打印实现 
    import java.lang.Character;
    import java.lang.StringBuffer;
    public class Test

       public String testString;
       public String[] charString ;
       public String[] numString ;
       public Test(String s)
       {
          this.testString=s;
       } 
       public static String chatToString(char ch)
       { 
           String str = String.valueOf(ch);
           return  str;
        }
       public static void reverse(String s)           // 反向输出字符串
       { 
           for(int i=s.length()-1;i>=0;i--)
                 System.out.print(s.charAt(i));
        }
        public static boolean firstisletter(String s) //字符串的首字母是否是字母
       {   
           return  Character.isLetter(s.charAt(1));
        }
       public static int notlettersNum(String s)      //非字母的字符串个数
       { 
           String[] charString2=new String[20];
           for(int j=0;j<20;j++) charString2[j]="";
           s=s.toLowerCase();
           int index=0;
           if (!firstisletter(s)) index++;
           for(int i=0;i<s.length()-1;i++)
           {
               
             if(Character.isLetter(s.charAt(i)))
             {
                 continue;
             }
             else
             { 
                charString2[index]=charString2[index].concat(chatToString(s.charAt(i)));
                //System.out.println(chatToString(s.charAt(i)));
             }
            if((i+1)<(s.length()-1) && Character.isLetter(s.charAt(i+1))) 
               {
                 index++;
               }
           
           }
         return index;
        }
       public static int lettersNum(String s)         //字母的字符串个数
       { 
           String[] charString1=new String[10];
           for(int j=0;j<10;j++) charString1[j]="";
           s=s.toLowerCase();
           int index=0;
           if (firstisletter(s)) index++;
           for(int i=0;i<s.length()-1;i++)
           {
               
             if(!Character.isLetter(s.charAt(i)))
             {
                 continue;
             }
             else
             { 
                charString1[index]=charString1[index]+chatToString(s.charAt(i));
             }
            if((i+1)<(s.length()-1) && !Character.isLetter(s.charAt(i+1))) 
               {
                 index++;
               }
           
           }
         return index;
        }
       public String[] getchars(String sss)                //得到字母的字符串数组
       {
            int letterNum =Test.lettersNum(sss);
            int notletterNum=Test.notlettersNum(sss);
            if(firstisletter(sss)) 
              {
                letterNum++; 
              }
              else 
                {
                 notletterNum++;
                }
           String s=sss;
           int charlen=letterNum;
           String[] charString1=new String[charlen];
           for(int j=0;j<charlen;j++) charString1[j]="";
           s=s.toLowerCase();
           int index=0;
           for(int i=0;i<s.length();i++)
           {
               
             if(!Character.isLetter(s.charAt(i)))
             {
                 continue;
             }
             else
             { 
                charString1[index]=charString1[index]+chatToString(s.charAt(i));
             }
            if((i+1)<(s.length()-1) && !Character.isLetter(s.charAt(i+1))) 
               {
                 index++;
               }
           
           }
           return charString1;
       }
       public String[] getnums(String sss)                //得到非字母的字符串数组
       {
            int letterNum =Test.lettersNum(sss);
            int notletterNum=Test.notlettersNum(sss);
            if(firstisletter(sss)) 
              {
                letterNum++; 
              }
              else 
                {
                 notletterNum++;
                }
           String s=sss;
           int charlen=notletterNum;
           String[] charString2=new String[charlen];
           for(int j=0;j<charlen;j++) charString2[j]="";
           s=s.toLowerCase();
           int index=0;
           for(int i=0;i<s.length();i++)
           {
               
             if(Character.isLetter(s.charAt(i)))
             {
                 continue;
             }
             else
             { 
                charString2[index]=charString2[index].concat(chatToString(s.charAt(i)));
                //System.out.println(chatToString(s.charAt(i)));
             }
            if((i+1)<(s.length()-1) && Character.isLetter(s.charAt(i+1))) 
               {
                 index++;
               }
           
           }
           return charString2;
       }
       public static void main(String[] args)
       {   
               String str="ab12cd34 ef";
               Test t1= new Test(str);
               String[] ss = t1.getchars(str);
               String[] num=t1.getnums(str);
               int letterNum =t1.lettersNum(str);
               int notletterNum=t1.notlettersNum(str);
                int j=0;
                 for(int i=letterNum-1;i>=0;i--)
                 { 
                    System.out.print(ss[i]);
                    if(j<notletterNum)
                      {
                         Test.reverse(num[j++]);
                      }
                
                 }   } 
    }