黑马程序员技术交流社区

标题: Java基础--String练习1--字符串反转和去除字符串两端空格 [打印本页]

作者: michael_wlq    时间: 2015-9-14 19:24
标题: Java基础--String练习1--字符串反转和去除字符串两端空格
/**
*要求:
* 1. 模拟一个trim方法,去除字符串两端的空格。
*            思路:  
*            1. 判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止,结尾处判断空格也是如此;
*         2. 当开始和结尾都判断到不是空格时,就是要获取的字符串。
*
* 2. 将一个字符串进行反转,将字符串中指定部分进行反转,"abcdefg";abfedcg
*           思路:
*       1. 曾经学习过对数组的元素进行反转;
*       2. 将字符串变成数组,对数组反转;
*       3. 将反转后的数组变成字符串;
*       4. 只要将或反转的部分的开始和结束位置作为参数传递即可。
*/

示例:
  1. public class StringTest2 {

  2.         public static void sop(String str) {
  3.                 System.out.println(str);
  4.         }

  5.         public static void main(String[] args) {
  6.                 String s = "  ab cd  ";

  7.                 sop("(" + s + ")");
  8.                 // s = myTrim(s);
  9.                 // sop("("+s+")");

  10.                 sop("(" + reverseString(s) + ")");

  11.         }

  12.         /**
  13.          * 练习二:将字符串反转
  14.          *
  15.          * 思路: 1. 将字符串变成数组; 2. 对数组反转; 3. 将数组变成字符串。
  16.          */
  17.         public static String reverseString(String s, int start, int end) {
  18.                 // 字符串变数组。
  19.                 char[] chs = s.toCharArray();

  20.                 // 反转数组。
  21.                 reverse(chs, start, end);

  22.                 // 将数组变成字符串。
  23.                 return new String(chs);
  24.         }

  25.         public static String reverseString(String s) {
  26.                 return reverseString(s, 0, s.length());

  27.         }

  28.         private static void reverse(char[] arr, int x, int y) {
  29.                 for (int start = x, end = y - 1; start < end; start++, end--) {
  30.                         swap(arr, start, end);
  31.                 }
  32.         }

  33.         private static void swap(char[] arr, int x, int y) {
  34.                 char temp = arr[x];
  35.                 arr[x] = arr[y];
  36.                 arr[y] = temp;
  37.         }

  38.         // 练习一:去除字符串两端空格。
  39.         public static String myTrim(String str) {
  40.                 int start = 0, end = str.length() - 1;

  41.                 while (start <= end && str.charAt(start) == ' ')
  42.                         start++;

  43.                 while (start <= end && str.charAt(end) == ' ')
  44.                         end--;

  45.                 return str.substring(start, end + 1);
  46.         }
  47. }
复制代码









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2