首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

CSDN没人了吗?母亲救救啊……

2011-12-12 
CSDN没人了吗?妈妈救救啊……怎么实现字符反转不能调用库函数比如:thechinadalianmicrosoft反转成为:microso

CSDN没人了吗?妈妈救救啊……
怎么实现     字符反转     不能调用库函数        
 
比如:the     china     dalian     microsoft        
反转成为:microsoft     dalian     china     the        
不是         tfosorcim     nailad     anihc     eht    
 
我当时的错误示例:    
错误1:class     a    
{    
                  public     static     void     main(String[]     args)        
                  {    
                                      String     str= "     the     china     dalian     microsoft     ";    
                                      char[]     c=str.toCharArray();    
                                      char[]     temp=new     char[c.length];    
                                      for(int     i=0,j=c.length-1;i <c.length;i++,j--)    
                                      {    
                                                      temp[j]=c[i];    
                                      }    
                                                              System.out.println(temp);    
              }    
}    
 
错误2:    
 
class     b    
{    
                  public     static     void     main(String[]     args)        
                  {    
                          String     a     =     "da     lian     joyesoft ";    
                          String     c     = " ";    
                          StringBuffer     b     =     new     StringBuffer( "the     china     dalian     microsoft     ");    


                          for(int     i=a.length();i> =0;i--)    
                          {    
                                      if(i <a.length())    
                                      c     =     c     +     b.substring(i,i+1);    
                                      else     if(i==a.length())    
                                      c     =     c+     b.substring(i);    
                          }    
                          System.out.println(c);    
                  }    
}    
 
错误3:    
 
import     java.io.*;    
public     class     c    
{    
      public     static     void     main(String[]     args)     throws     IOException        
      {    
                  InputStreamReader     is=new     InputStreamReader(System.in);    
                  BufferedReader     br=new     BufferedReader(is);    
                  String     in=br.readLine();    
                  char[]     c=in.toCharArray();    
                  int     i=in.length();i--;    
                  char     temp;    
                  for     (int     count=0;count <i;count++,i--     )    
                  {    
                          temp=c[count];    
                          c[count]=c[i];    
                          c[i]=temp;    
                  }    
                  System.out.println(new     String(c,0,in.length()));    
      }    
}    
 
错误结果:tfosorcim     nailad     anihc     eht。    


 
按照此逻辑可以稍微调整即可得到正确的结果:    
 
public     class     d    
{    
                  public     static     void     main(String[]     args)    
                  {    
                                      String     str     =     "the     china     dalian     microsoft     ";    
                                      String[]     str2     =     str.split( "     ");    
                                      for(int     i     =     str2.length     -     1;i     > =     0;i--)    
                                      {    
                                                          System.out.print(str2[i]     +     "     ");    
                                      }    
                                                          System.out.println();    
                  }    
}    
 
正确结果:microsoft     dalian     china     the     。    
 
但是上面这个方法调用了相关的库函数,所以也没达到要求!    
 
那位高手指点我一下啊,在线等答案……    



[解决办法]

String str1 = "bai chi wen ti ";
char[] c = str1.toCharArray();
StringBuffer tmp = new StringBuffer( " ");
String out = " ";
for(int i = 0 ;i < c.length;i++){
if(c[i] != ' '){
tmp.append(c[i]);
}else{
out = tmp.toString() + " " + out;
tmp = new StringBuffer( " ");
}
}
out = tmp.toString() + " " + out;
System.out.println(out);
[解决办法]
第一个可以用apache的lang库实现

import org.apache.commons.lang.StringUtils;

public class StrReserve {
public static void main(String[] args)
{
String str = "the china dalian microsoft ";
str = StringUtils.reverseDelimited(str, ' ');
System.out.println(str);
}
}
[解决办法]
public class TestClass {
public static void main(String[] args){


TestClass testClass = new TestClass();
String s = " the china dalian microsoft ";
String reversal = testClass.reversal(s);
System.out.println( "reversal: " + reversal);
}

/**
* 下面的函数用来反转字符串,只有几行,非常简单,利用substring函数而已
*/
public String reversal(String str){
String result = " ";
StringBuffer sb = new StringBuffer();
for(int i = 0; i < str.length();i++){
sb.append(str.subSequence(str.length()-1 - i, str.length() -i));
}
result = sb.toString();
return result;
}
}
=================
结果reversal: tfosorcim nailad anihc eht
[解决办法]
substring,indexOf的都不能用是么?
[解决办法]
不能调用库函数
----------------
没有jdk,java就成垃圾了,啥也实现不了。居然还有不能调用库函数的??
[解决办法]
这个应该是你想要的东西吧,想不到什么捷径,只能静下心来一种种情况逐一分析。
至于说库函数,我用到了toCharArray,length,println三个,根据我的理解,出题人
的本意不会把这三个函数算在所谓库函数里的。如果可以的话要给分啊。

public class b {
public static void main(String[] args) {
String str = " the china dalian microsoft ";
char[] c = str.toCharArray();
char[] temp = new char[c.length];
int iFromStart=0;
int iFromEnd=0;
int iFrom=0;
int iToStart=0;
int iToEnd=0;
int iTo=0;
char cPre= ' ';
for (int i = 0, j = c.length - 1; i < c.length; i++, j--) {
if (i == 0) {
if (c[i] == ' ') {
/* 第一个是空格 */
temp[j] = c[i];
} else {
/* 第一个不是空格,开始一个新词 */
iFromStart = i;
}
} else {
if (cPre == ' ') {
if (c[i] == ' ') {
/* 前面是空格,现在还是空格. */
temp[j] = c[i];
} else {
/* 前面是空格,现在不是空格,开始一个新词 */
iFromStart = i;
}
} else {
if (c[i] == ' ') {
/* 前面不是空格,现在出现空格,终了一个词 */
iFromEnd = i-1;
iToStart = c.length-1-iFromEnd;
for(iFrom = iFromStart,iTo = iToStart; iFrom <=iFromEnd; iFrom++,iTo++){
temp[iTo]=c[iFrom];
}
} else {
if (i == c.length - 1) {
/* 前面不是空格,现在也不是空格,已经到最后,终了一个词 */
iFromEnd = i;
iToStart = c.length-1-iFromEnd;
for(iFrom = iFromStart,iTo = iToStart; iFrom <=iFromEnd; iFrom++){
temp[iTo]=c[iFrom];
}
} else {
/* 前面不是空格,现在也不是空格,继续一个词 */
}
}
}
}
cPre = c[i];
}
System.out.println(temp);
}
}
[解决办法]
简单的问题
String str = " the china dalian microsoft ";
List <String> list=new ArrayList() <String> ;
list=str.split( ' ');//split by space
int len=list.size();
String printStr= ' ';
int i;
for(i=len;i> 0;i++){
printStr=printStr+list.get(i);
}
System.out.println(printStr);


热点排行