10利用reverse(名称)进行字符串的翻转。
运行结果:
11创建一个36开白可变的字符串对象,不包含任何内容,将一个字符串转换为可变内容的字符串
12 StringBuilder append(String str)将指定的字符串附加到此字符序列,StringBuilder reverse()字符串的反转
13题型一。判断字符串有无重复字符.
package Demo16; import java.util.Scanner; /** * 第五章 * 5.1 题解:判断字符串有无重复字符 * @author MZFAITHDREAM * */ public class 字符串专题一 { static boolean checkDifferent(String iniString){ if (iniString.isEmpty()) { return true; } int []flag = new int[128]; // 扫描字符串 for (int i = 0; i < iniString.length(); i++) { int c = iniString.charAt(i); if (flag[c]>0) { return false; }else { flag[c]++; } } return true; } public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请用户输入你的字符串的内容"); String a=sc.next(); System.out.println("如果有重复返回FALSE"); System.out.println(checkDifferent(a)); } }
14 题型二 巧妙翻转字符串。sBuffer.reverse().toString();
package Demo16; import java.util.Iterator; import java.util.Scanner; /** * 字符串的 * 5.2 题解:巧妙翻转字符串 * @author MZFAITHDREAM * */ public class 字符串专题二 { public static String reverseString_1 (String iniString){ // StringBuilder sBuilder = new StringBuilder(iniString) // 和StringBuffer效果差不多。 StringBuffer sBuffer = new StringBuffer(iniString); return sBuffer.reverse().toString(); } public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请用户输入你的字符串的内容"); String a=sc.next(); System.out.println("如果有重复返回FALSE"); System.out.println(reverseString_1(a)); } }
15题型三
16 题型四 :替换字符串中的空格。 题型四
package Demo16; import java.util.Scanner; /** * 字符串三 * @author MZFAITHDREAM * 5.4 实践:替换字符串中的空格 * */ public class 字符串专题四 { public static void main(String[] args) { System.out.println("解法一:"+replaceSpace("Mr John Smith", 13)); System.out.println("解法二:"+replaceSpace("Mr John Smith 00 000 00 0000 000000 0000".toCharArray(), 13)); } public static String replaceSpace(String iniString, int length) { return iniString.replaceAll("\\s", "%20"); } static String replaceSpace(char[] iniString,int length){ int count = length; for (int i = 0; i <length; i++) { if (iniString[i]==' ') { count += 2; } } int p1 = length -1; int p2 = count -1; while(p1>=0){ if (iniString[p1]==' ') { iniString[p2--] = '0'; iniString[p2--] = '2'; iniString[p2--] = '%'; }else { iniString[p2--] = iniString[p1]; } p1--; } return new String(iniString, 0, count); } }
17压缩字符串。题型五
package Demo16; /** * 5.5 题解:压缩字符串 * @author MZFAITHDREAM * */ public class 字符串的专题五 { public static void main(String[] args) { String res =zipString("aaabccb"); System.out.println(res); } static String zipString(String src){ int count = 0; // 记录前一个字符的重复次数 char last = 0; // 上一个字符 StringBuilder sb = new StringBuilder(); for (int i = 0; i < src.length(); i++) { char charAt = src.charAt(i); if (sb.length()==0) { // 处理第一个字符 sb.append(charAt); count++; }else { if (last==charAt){ // 和上一个字符相同 count++; }else { // 和上一个字符不同 sb.append(count).append(charAt); count = 1; } } last = charAt; } // 考虑最后一个字符的重复次数 if (count>=1) { sb.append(count); } // 比较新字符串和原字符串 if (sb.length()>= src.length()) { System.out.println("字符串没有变短:"+sb.toString()); return "原字符串:"+src; } return sb.toString(); } }
18判断两字符串的字符集是否相同
package Demo16; /** * 5.6 题解:判断两字符串的字符集是否相同 * @author MZFAITHDREAM * */ public class 字符串专题六 { public static void main(String[] args) { System.out.println(check_1("abc", "ab")); System.out.println(check_1("abc", "abc")); } /** * 限制字符串组成的字符为ASCII * 解法一 */ static boolean check_1(String s1,String s2){ int[] help1 = new int[128]; //扫描s1 for (int i = 0; i < s1.length(); i++) { char c = s1.charAt(i); if (help1[c] == 0) help1[c] = 1; } int[] help2 = new int[128]; //扫描s2 for (int i = 0; i < s2.length(); i++) { char c = s2.charAt(i); if (help2[c] == 0) help2[c] = 1; } for (int i = 0; i < help2.length; i++) { if (help1[i]!=help2[i]) { return false; } } return true; } }