String类练习
1.模拟一个trim方法,去除字符串两端的空格
2.将一个字符串进行反转。将字符串中指定部分进行反转
3.获取一个字符串在另一个字符串中出现的次数
4.获取两个字符串中最大相同子串
5.对字符串中字符进行自然顺序排序
StringDemo
package com.ff.string; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class StringDemo { public static void main(String[] args) { String str = " abd de "; String str1 = myTrim(str); System.out.println(str1);// abd de String str2 = "abcdefg"; String str3 = myReverseString1(str2, 2, 5);// abfedcg String str4 = myReverseString2(str2, 2, 5);// abfedcgs System.out.println(str3 + "," + str4);// abfedcg,abfedcg System.out.println(str3 + str4);// abfedcgabfedcg String str5 = "abkkcadkabkebfkabkskab"; String str6 = "ab"; System.out.println(getTime(str5, str6));// 4 List<String> str7 = getMaxSubString("abcwerthelloyuiomdef", "cvhellobnyuiom"); System.out.println(str7);// [hello, yuiom] String str8 = "adfagdgdada"; String str9 = sort(str8); System.out.println(str9);// aaaaddddfgg } // 5.对字符串中字符进行自然顺序排序。 // 提示:1)字符串变成字符数组。 // 2)对数组排序,选择,冒泡,Arrays.sort(); // 3)将排序后的数组变成字符串。 public static String sort(String str) { char[] c = str.toCharArray();// 转换为数组 Arrays.sort(c); return new String(c); } // 4.获取两个字符串中最大相同子串。比如: str1 = "abcwerthelloyuiodef“;str2 = "cvhellobnm" // 提示:将短的那个串进行长度依次递减的子串与较长的串比较。 public static List<String> getMaxSubString(String str1, String str2) { String maxStr = (str1.length() > str2.length()) ? str1 : str2; String minStr = (str1.length() < str2.length()) ? str1 : str2; int len = minStr.length(); List<String> list = new ArrayList<String>(); for (int i = 0; i < len; i++) { for (int x = 0, y = len - i; y <= len; x++, y++) { String str = minStr.substring(x, y); if (maxStr.contains(str)) { list.add(str); } } if (list.size() != 0) { return list; } } return null; } // 3.获取一个字符串在另一个字符串中出现的次数。比如:获取“ ab”在 "abkkcadkabkebfkabkskab"中出现的次数 // str2在str1中出现的次数 public static int getTime(String str1, String str2) { int count = 0; int len; while ((len = str1.indexOf(str2)) != -1) { count++; str1 = str1.substring(len + str2.length()); } return count; } // 2.将一个字符串进行反转。将字符串中指定部分进行反转。 // 比如将"abcdefg"反转为"abfedcg" // 方法二: 将abcdefg分为三部分,ab cdef g,前面的不变,中间的从后面一个个加进来,再加上最后一部分 public static String myReverseString2(String str, int start, int end) { String str1 = str.substring(0, start);// 截取的第一部分 for (int i = end; i >= start; i--) { char c = str.charAt(i); str1 += c;// 加上一个个从后往前字符 } str1 += str.substring(end + 1);// 加上后一部分 return str1; } // 方法一:使用数组的方式转换 public static String myReverseString1(String str, int start, int end) { char[] c = str.toCharArray();// 字符串转为数组 return reverseArray(c, start, end); } private static String reverseArray(char[] c, int start, int end) { for (int i = start, j = end; i < j; i++, j--) { char temp = c[i]; c[i] = c[j]; c[j] = temp; } // 字符数组--->字符串 return new String(c); } // 1.模拟一个trim方法,去除字符串两端的空格 public static String myTrim(String str) { int start = 0; int end = str.length() - 1; while (start < end && str.charAt(start) == ' ') { start++; } while (start < end && str.charAt(end) == ' ') { end--; } return str.substring(start, end + 1);// 左闭右开所以得+1 } }
All that work will definitely pay off