1模拟一个 trim 方法,去除字符串两端空格,
思路:
1 判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止.
结尾处判断空格也是如此.
2,当开始和结尾都判断到不是空格时, 就是要获取的字符串.
class StringTest
{
public static void sop(String str)
{
System.out.println(str);
}
public static void main(String[] args)
{
String s = " ab cd ";
sop("("+s+")");
s = myTrim(s);
sop("("+s+")");
sop("("+reverString(s)+")");//重载 ,参数变量可以改变!
}
//练习一,去除字符串两端空格.
public static String myTrim(String str)//模拟trim方法
{
int start = 0, end = str.length()-1;
while(start<=end && str.charAt(start)==' ')//判断多次用while语句
start++;
while(start<=end && str.charAt(end)==' ')
end--;
return str.substring(start,end+1);
}
//练习二:将字符串反转.
/*
思路
1将字符串变成数组.
2对数组反转.
3将数组变成字符串.
*/
public static String reverseString(String s,int start,int end)
{
//字符串变成字符数组.
char[] chs = s.toCharArray();
//反转数组.
reverse(chs,start,end);
//将数组变成字符串
return new String(chs);
}
public static String reverseString(String s)//重载
{
return reverseString(s,0,s.length());//正串数组反转
}
private static void reverse(char[] arr,int x,int y)
{
for (int start=x,end=y-1 ;start<end;start++,end-- )//y是数组长度 不是数组角标!
{
swap(arr,start,end);
}
}
private static void swap(char[] arr,int x,int y)
{
char temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
} |
|