//-------------String类-------------- //求两个字符串的最大相同子串 /* 思路: 1.找出较短的那个字符串 2.找出短串的所有子串,使用contains函数判断是否在长串中包含了这个子串 定义一个空字符串max,始终保存目前最大的子串 3.输出max */ public class StringAPI { public static void main(String args[]) { String strA = "asdfitcastghjfghjk"; String strB = "xcitcastvbnm"; MaxStr max = new MaxStr(strA, strB); String maxStr = max.getMaxStr(); System.out.println("最大子串:" + maxStr); } } class MaxStr { String longer; String shorter; //检出长短字符串 MaxStr(String strA, String strB) { if (strA.length() > strB.length()) { this.longer = strA; this.shorter = strB; } else { this.longer = strB; this.shorter = strA; } } //获得最大子串 /* 两层for循环就是为了找出shorter串的所有子串 假设串为 1234 实例: 外层第一次循环 1 2 3 4 1 2 3 1 2 1 ------- 外层第二次循环 2 3 4 2 3 2 ------- 外层第三次循环 3 4 3 ------- 外层第四次循环 4 */ public String getMaxStr() { String max = ""; for (int i = 0; i < shorter.length(); i++) { for (int j = shorter.length(); j >= i+1; j--) { if (longer.contains(shorter.substring(i, j))) { String temp = shorter.substring(i, j); //System.out.println(temp); if (temp.length() > max.length()) { max = temp;//max始终存放目前已知的最大子串 } } } } return max; } } //对字符串中的字符进行自然顺序排序 //java中char类型占两个字节,byte类型占一个字节 public class StringAPI { public static void main(String args[]) { String str = "iuhewshnbjiasfoinsaojawnpjlkegh"; String strNew = mySort(str); System.out.println(strNew); } private static String mySort(String str) { char[] chs = str.toCharArray();//将字符串转化为char数组 Arrays.sort(chs); //Arrays类实现数组的排序和搜索等 return new String(chs);//将数组以String对象的形式返回 } } //String的trim方法 //1.使用trim方法,2.自己写一个方法模拟trim方法 //trim方法返回一个去掉前后空格的字符串 public class StringAPI { public static void main(String args[]) { String str = "poaeg"; String strNew = myTrim(str); System.out.println("+" + strNew + "+"); System.out.println("-" + str.trim() + "-"); } //注意!!这个方法要保证在全为空格,没有空格,单端为空格和双端为空格的情况下都正确 private static String myTrim(String str) { int start = 0; int end = str.length()-1; //这一步start下标最多移动到最后一个元素 while (start < str.length()-1 && str.charAt(start) == ' ') start++; //这一步end下标最多移动到了start所指的元素的前一个元素 while (end >= start && str.charAt(end) == ' ') end--; return str.substring(start, end+1); } /* 解释:str.charAt(start) == ' '这一句是检测从前到后的第一个非空格字符的 而start < str.length()-1这一句则是专门为全是空格的情况准备的 也就是说,即便全是空格,start至多指向最后一个空格,不会出现越界 str.charAt(end) == ' '这一句是检测从后到前的第一个非空格字符的 而end >= start也是专为全为空格的情况设计的,即全为空格时, end最多指到start之前的一个元素那里 最终,正常情况不说了 全为空格的情况下,str.substring(start, end+1)返回的是一个空字符————""; */ } //--------------基本类型包装类 //基本类型包装类中都有字符串与数字互转的功能 //还有最大最小值,按进制输出等等小功能 //只有一个小细节:当Integer类自动包装的时候, //遇到Byte(-128~127)范围内的数的时候,直接公用,超出这个范围就不共用了 public class StringAPI { public static void main(String args[]) { Integer i = 128; Integer j = 128; System.out.println(i == j);//false Integer p = 127; Integer q = 127; System.out.println(p == q);//true } } //练习: //"23 9 -4 18 100 7" //要求这串数字按照从小到大排序并生成一个数值有序的字符串 //思路:将每个数字依次提取出来到一个数组中去,排序后变成一个新字符串,最后输出出来 //我自己写的方法 public class StringAPI { public static void main(String args[]) { String numStr = "23 9 -4 18 100 7"; String newNumStr = mySort(numStr); System.out.println("排序前:" + numStr); System.out.println("排序后" + newNumStr); } private static String mySort(String numStr) { int beginIndex = 0; int floatIndex = 0; int[] arr = new int[6]; String temp = numStr.trim(); { int i = 0; while (floatIndex < numStr.length()) { if (numStr.charAt(floatIndex) == ' ') { arr[i++] = Integer.parseInt(numStr.substring(beginIndex, floatIndex).trim()); beginIndex = floatIndex; } floatIndex++; } arr[i] = Integer.parseInt(numStr.substring(beginIndex, numStr.length()).trim()); } Arrays.sort(arr); StringBuffer sb = new StringBuffer(); for (int i = 0; i < arr.length; i++) { sb.append(Integer.toString(arr[i])+" "); } return sb.toString(); } } //参考老师的方法 public class StringAPI { private static final String SPACE = " "; public static void main(String args[]) { String numStr = "5 3 4 8 6 2 1 7 9"; String newNumStr = mySort(numStr); System.out.println("排序前:" + numStr); System.out.println("排序后:" + newNumStr); } private static String mySort(String numStr) { //以空格为分界切割整个字符串成为几个小字符串 String[] strArrs = numStr.split(SPACE); //获得被转化成了的int数组 int[] numArr = getNumArr(strArrs); Arrays.sort(numArr); //将数组中的数字拼接成一个字符串 return toString(numArr); } //将int型数组中的数字拼接成一个字符串 private static String toString(int[] numArr) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < numArr.length; i++) { if (i != numArr.length-1) sb.append(Integer.toString(numArr[i]) + " "); else sb.append(Integer.toString(numArr[i])); } return sb.toString(); } //将字符串数组的值全部转化为数字存到int型数组中去 private static int[] getNumArr(String[] strArrs) { int[] arr = new int[strArrs.length]; for (int i = 0; i < strArrs.length; i++) { arr[i] = Integer.parseInt(strArrs[i]); } return arr; } }