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