2022年0701-Com.Java.Basis第六课《主题String》(二)

简介: 2022年0701-Com.Java.Basis第六课《主题String》(二)

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;
     }
}
相关文章
|
1月前
|
Java 索引
String字符串常用函数以及示例 JAVA基础
String字符串常用函数以及示例 JAVA基础
|
1月前
|
Java 编译器 ice
【Java开发指南 | 第十五篇】Java Character 类、String 类
【Java开发指南 | 第十五篇】Java Character 类、String 类
32 1
|
1月前
|
存储 安全 Java
Java中的这些String特性可能需要了解下
Java中的String特性你知道哪些?虽然String很常见,通过源码可以看到String的值传递、字符串表和不可变性。本文基于JDK17说明。
33 1
|
4天前
Failed to bind properties under ‘logging.level‘ to java.util.Map java.lang.String, java.lang.String
Failed to bind properties under ‘logging.level‘ to java.util.Map java.lang.String, java.lang.String
4 0
|
5天前
|
安全 Java 数据安全/隐私保护
Java基础4-一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!(二)
Java基础4-一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!(二)
15 0
|
5天前
|
JSON 安全 Java
Java基础4-一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!(一)
Java基础4-一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!(一)
14 0
|
5天前
|
Java
guava Splitter 与java 内置的string的split 方法的区别
guava Splitter 与java 内置的string的split 方法的区别
7 0
|
7天前
|
Java
Java中判断String类型为空和null的方法
Java中判断`String`变量是否为空或`null`需用`== null`和`.isEmpty()`。示例代码提供两种方法:`main`方法直接判断,`safeGetString`方法提供默认值。当输入为`null`或空时,返回默认值。代码包含三个测试案例,分别处理`null`、空字符串和非空非`null`字符串。
27 0
|
14天前
|
Java
Java中String的用法
Java中String的用法
|
14天前
|
存储 缓存 安全
Java性能优化(二):Java基础-String对象及其性能优化
在深入探讨了String字符串的性能优化后,我们认识到优化字符串处理对提升系统整体性能的重要性。Java在版本迭代中,通过精心调整成员变量和内存管理机制,不断对String对象进行优化,以更高效地使用内存资源。String对象的不可变性是Java语言设计中的一个关键特性,它不仅确保了字符串的安全性,也为字符串常量池的实现提供了基础。通过减少相同值的字符串对象的重复创建,常量池有效地节约了内存空间。然而,不可变性也带来了挑战。在处理长字符串拼接时,我们需要显式使用类来避免性能下降。
19 1